1 有參數的裝飾器 --> 高階函數
創新互聯公司是一家專注于成都做網站、網站設計與策劃設計,葫蘆島網站建設哪家好?創新互聯公司做網站,專注于網站建設十余年,網設計領域的專業建站公司;建站業務涵蓋:葫蘆島等地區。葫蘆島做網站價格咨詢:18982081108
2 執行時間 --> time 庫
上代碼:
from functools import wraps
import time
# 面向對象寫法
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
# 常規寫法
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)
本文標題:如何實現decorator高階函數?
新聞來源:http://m.kartarina.com/article2/jeddoc.html
成都網站建設公司_創新互聯,為您提供做網站、網站設計公司、虛擬主機、、微信公眾號、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯