關於Python中的裝飾器理解

2022-05-01 21:57:12 字數 1360 閱讀 8057

裝飾器的作用就是**重用!!!!

import time

# 定義乙個能夠直接測試程式執行時間的**

def timenumber(func):

fronttime = time.time()

func()

endtime = time.time()

print("這個程式花了%f毫秒" % ((endtime - fronttime) * 1000))

def myfunc():

print("function go........")

time.sleep(2)

print("呼叫函式執行》")

timenumber(myfunc)

print("呼叫函式執行結束 《")

在每次都直接呼叫函式,並且在結束後,myfunc並沒用變為乙個帶有timenumber函式功能的新函式,如果要再用timenumber功能又得重新呼叫timenumber(myfunc)比較麻煩

這時候就可以使用裝飾器來實現一勞永逸的效果,看下面:

def timenumber(func):

fronttime = time.time()

func()

endtime = time.time()

print("這個程式花了%f毫秒" % ((endtime - fronttime) * 1000))

def myfunc():

print("function go........")

time.sleep(2)

print("裝飾器呼叫執行》")

myfunc = timenumber(myfunc)

myfunc()

print("裝飾器呼叫執行結束 《")

print("重新呼叫myfunc()")

myfunc()

執行結果,只要裝飾一次,則呼叫myfunc()則後續都有timenumber()函式的功能

、為了簡便使用裝飾器語法糖@,效果等同於這一句 myfunc = timenumber(myfunc)

@timenumber

def myfunc():

print("function go........")

time.sleep(2)

呼叫結果與上面一致

關於python裝飾器的理解

再看了很多裝飾器 解釋之後,懵懂的我,突然頓悟。主要參考 其實這兩個參考開始都看不下去。完全不懂呀。折磨時候,實驗 隨便折騰,竟然讓我頓悟了。抓到精髓了,再看就簡單了。還有個問題沒有解決,就是裝飾器的用處。主要參考 沒理解下去。回頭再看。裝飾器精髓 扮相 a,假演員 b,真演員 zhidou。扮相必...

Python中的裝飾器理解

主要記住兩個例子就好 1.裝飾器含有不確定引數 需要注意 1.裝飾器的引數func為函式,裝飾器內部函式 deco的引數 args,kwargs為func函式傳入的不確定性變數。2.裝飾器以輸出的函式作為形參,返回內部自定義的函式 內部自定義的函式返回形參傳入的函式 所以可認為,裝飾器傳入函式,返回...

python中的裝飾器理解

python裝飾器 fuctional decorators 就是用於拓展原來函式功能的一種函式,目的是在不改變原函式名 或類名 的情況下,給函式增加新的功能。這個函式的特殊之處在於它的返回值也是乙個函式,這個函式是內嵌 原 函式的函式。之前拓展函式的做法是侵入原函式進行拓展修改,例如 原始函式 i...