1. 程式人生 > >python裝飾器(2)

python裝飾器(2)

裝飾器 () 方式 cti 調用 st2 rgs 顯示 clas

1.以下代碼,bar作為參數被test2調用。bar的原代碼沒變,但調用方式從bar()變成test2(bar) 不符合裝飾器定義

 1 __author__ = "csy"
 2 
 3 def bar():
 4     print("in the bar")
 5 
 6 def test2(func):
 7     print(func)
 8     func()
 9 
10 test2(bar)

輸出:

<function bar at 0x00000000006BFE18>
in the bar

2.以下代碼bar的原代碼沒變,調用方式仍為bar(),符合裝飾器定義

 1 __author__
= "csy" 2 3 def test2(func): 4 def warpper(*args,**kwargs): 5 print(func) 6 func() 7 return warpper 8 9 @test2 10 def bar(): 11 print("in the bar1") 12 13 bar()

輸出:

<function bar at 0x0000000000A4FEA0>
in the bar1

如果去掉 第9行 @test2,則只會顯示

in the bar1

證明裝飾器功能已實現

python裝飾器(2)