前面說了ide
計算原有函數的執行時間
函數
利用裝飾器如何給原有函數傳參ci
利用裝飾器如何接受原有函數的返回值it
最後咱們說下如何給裝飾器傳值class
舉個例子,有的函數我須要統計函數的運行時間,有的函數我須要統計他開始執行的時間,有人會說能夠寫多個裝飾器,這個方法能夠,可是這種方法會不會讓咱們的代碼閒的過於臃腫test
假設test01須要計算函數的運行時間
原理
看代碼方法
def record_time(key):im
def out_warppper(func):統計
def warpper(*agrs,**Kwagrs):
start_time = time.time()
a = func(*agrs,**Kwagrs)
end_time = time.time()
print "總共用時:" + str(int(end_time) - int(start_time))
return a
return warpper
return out_warpper
@record_time("test01")
def test01(name=name):
time.sleep(3)
print "test"
return name
r = test01("tets01")
print r
解釋
@record_time("test01")== test01 = record_time("test01") == out_warpper(test01) == warpper
test01("test01") == warpper("test01")
執行warpper函數
執行原test01函數
能夠看到不論是接受原函數的返回值,接受函數傳參,裝飾器接受參數,只要你真正理解了裝飾器的調用原理及方式,都不難實現