直接上代碼
# python萬能裝飾器實現計算函數的調用次數和執行時間
import time
def set_fun(func):
num = 0 # 初始化次數
def call_fun(*args, **kwargs):
nonlocal num # 聲明num 變當前作用域局部變量爲最臨近外層(非全局)作用域變量。
start = time.time() # 代碼執行開始時間
num += 1 # 每次調用次數加1
print("測試功能:")
func(*args, **kwargs) # 原函數
end = time.time() # 代碼執行結束時間
longtime = end - start
print("此函數被調用%s次,本次調用花費時間:%s" % (num, longtime))
return call_fun
@set_fun
def test():
print("測試中~~~~~")
time.sleep(1)
# 在這裏調用三次函數
test()
test()
test()
運行效果如下
測試功能:
測試中~~~~~
此函數被調用1次,本次調用花費時間:1.0134446620941162
測試功能:
測試中~~~~~
此函數被調用2次,本次調用花費時間:1.0088226795196533
測試功能:
測試中~~~~~
此函數被調用3次,本次調用花費時間:1.0122005939483643