python中的裝飾器

2022-07-22 00:15:28 字數 1215 閱讀 9215

今天接觸了python中的裝飾器,感覺跟設計模式中的那個裝飾器模式挺像的。都是動態的為其他部件新增功能,感覺是很有用的功能。(其實我也不知道在實際工作中,能用到什麼地方去)

談談我對裝飾器的認識,裝飾器是一種特殊函式。可以理解為巢狀函式+高階函式的組合,它的功能就是裝飾其它的函式,其實就是動態地為其它函式新增功能。兩條原則:不改變原來函式的**,不改變原來函式的呼叫。說的清楚一點,其實可以這樣理解:在裝飾器中呼叫被裝飾的函式,並在這個呼叫的函式前後新增其它**。這樣就形成了乙個新的新增了功能的函式,然後就將這個函式的位址賦給原來的函式。(使用了@decorato)的方法。

1

import

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...