裝飾器的作用就是**重用!!!!
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...