裝飾函式printtime——列印遞迴函式執行時間
def
printtime
(func):
@wraps(func):
def(*args,**kwargs):
start=time()
print(func(*args,**kwargs))
end=time()
print("spent time:%s"%(end-start))
遞迴函式n!
def如果此時:f(n):
if n==1:return
1return n*f(n-1)
@printtime
deff
(n):
……
一定會出現bug,講裝飾器執行太多次!!!
將遞迴函式多定義一層函式
@printtime
deff
(n):
def_f
(n):
if n==1:return
1return n*f(n-1)
return _f(n)
#輸入:
f(10)
#輸出:
3628800
spent time:0.0
原因是:此時裝飾器裝飾的是f(n),而不是_f(n)。也就是說,f(10)這麼執行的: 計算 _f(10)這個值,return了這個值。
python群:190341254
丁。
python 函式裝飾 Python 函式裝飾器
無引數的 函式裝飾器 funa 作為裝飾器函式 def funa fn print sakura func a fn 執行傳入的fn引數 print sakura second return sakura return funa def funb print sakurab 返回結果為 sakura...
python 函式裝飾 Python 函式裝飾器
首次接觸到裝飾器的概念,太菜啦!python 裝飾器可以大大節省 的編寫量,提公升 的重複使用率。函式裝飾器其本質也是乙個函式,我們可以把它理解為函式中定義了乙個子函式。例如我們有這麼乙個需求,每次執行乙個函式後,需要知道這個函式執行了多長時間。一般情況下,我會這樣寫 defaccumulate n...
Python之遞迴函式與裝飾器
遞迴函式 在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。遞迴函式特性 必須有乙個明確的結束條件 每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少 相鄰兩次重複之間有緊密的聯絡,前一次要為後一次做準備 通常前一次的輸出就作為後一次的輸入 遞迴效率不高,遞迴...