高階函數(shù)2 執(zhí)行時間 --> time 庫上代碼:from functools import wraps import time # 面向?qū)ο髮懛? class TakeTime: ..."/>
1 有參數(shù)的裝飾器 --> 高階函數(shù)
2 執(zhí)行時間 --> time 庫
上代碼:
from functools import wraps
import time
# 面向?qū)ο髮懛?
class TakeTime:
def __init__(self, para: int):
self.para = para
def __call__(self, func):
@wraps(func)
def wrapped(*args, **kwargs):
start_time = time.time()
name = func.__name__
func(*args, **kwargs)
count_time = time.time() - start_time
if self.para >= count_time:
print("the {name} take {time}, less time".format(name=name, time=count_time))
else:
print("the {name} take {time}, more time".format(name=name, time=count_time))
return func
return wrapped
# 常規(guī)寫法
def func_time(para: int):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
name = func.__name__
func(*args, **kwargs)
count_time = time.time() - start_time
if para >= count_time:
print("the {name} take {time}, less time".format(name=name, time=count_time))
else:
print("the {name} take {time}, more time".format(name=name, time=count_time))
return func
return wrapper
return decorator
@TakeTime(10)
def log():
for x in range(10):
time.sleep(0.5)
@func_time(10)
def log1():
for x in range(10):
time.sleep(0.5)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。