今天接觸了python中的裝飾器,感覺跟設計模式中的那個裝飾器模式挺像的。都是動態的為其他部件新增功能,感覺是很有用的功能。(其實我也不知道在實際工作中,能用到什麼地方去)
談談我對裝飾器的認識,裝飾器是一種特殊函式。可以理解為巢狀函式+高階函式的組合,它的功能就是裝飾其它的函式,其實就是動態地為其它函式新增功能。兩條原則:不改變原來函式的**,不改變原來函式的呼叫。說的清楚一點,其實可以這樣理解:在裝飾器中呼叫被裝飾的函式,並在這個呼叫的函式前後新增其它**。這樣就形成了乙個新的新增了功能的函式,然後就將這個函式的位址賦給原來的函式。(使用了@decorato)的方法。
1import
time
2def
deco1(lin):
3def
link(func):
4def tt(*args,**kwargs):
5 start_time=time.time()
6 func(*args,**kwargs)
7 end_time=time.time()
8if lin=="a"
:9print ("
run time a is :%s
" %(end_time-start_time))
10elif lin=="b"
:11print("
run time b is :%s
" % (end_time -start_time))
12return
tt13
return
link
14 @deco1(lin="a"
) # 這一句**中的引數,傳給最外層的deco1。然後相當於test1=tt(name)
15def
test1(name):
16 time.sleep(1)
17print ("
in the test1")
18print ("
my name:
",name)
19 @deco1(lin="b"
)20deftest2():
21 time.sleep(1)
22print ("
in the test2")
23 test1("
jack")
24 test2()
python中的裝飾器
其實去年就開始學python了,零零散散,陸陸續續學了點,期間學習了python web開發,爬蟲系統 但是一些基礎性的知識點長時間不看了就會忘,所以寫個部落格記錄下來,忘了可以隨時檢視,不用回去看 了,希望也能幫助大家學習哈。python中的裝飾器decorator其實是乙個高階函式,它接受乙個函...
Python 中的裝飾器
1.基本概念 問題 裝飾器是什麼?解答 嚴格來說,裝飾器只是語法糖,裝飾器是可呼叫的物件,可以像常規的可呼叫物件那樣呼叫,特殊的地方是裝飾器的引數是乙個函式 問題 裝飾器有什麼特性?解答 裝飾器有 個特性,一是可以把被裝飾的函式替換成其他函式,二是可以在載入模組時候立即執行 def decorate...
python中的 裝飾器
示例 def fun a arg print a arg fun a deffun b print b 輸出 c python34 python.exe c users administrator desktop test.pyab process finished with exit code 0...