誰能把代碼逐行解析一下?
import time
def performance(f):
? ? def fn(*args,**kw):
? ? ? ? t1 = time.time()
? ? ? ? r = f(*args, **kw)
? ? ? ? t2 = time.time()
? ? ? ? print 'call %s() in %fs' % (f.__name__, (t2 - t1))
? ? ? ? return r
? ? return fn
@performance
def factorial(n):
? ? return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
2020-03-12
先定義了一個裝飾器performance:
? ? ?在其中定義一個函數fn:先記錄運行前的時間t1,然后用r先讓函數運行,在記錄運行后的時間t2,之后輸出相應信息(f.__name__輸出調用裝飾器的函數名稱:factorial)
最后調用裝飾器,函數factorial返回值為10的階乘,輸出函數返回值同時輸出裝飾器返回值
? ? ? ? ??
2020-06-29
有沒有大神解答一下,裝飾器里的 r = f(*args,**kw), 我知道參數是傳進來了,但是 f函數不是沒定義嗎,那這個計算的時間差值還是函數factorial運行的時間嗎?? 0.0