# 不带参数类函数
class TaskA(object): def __init__(self, f): # 实例化函数 self.f = f def __call__(self): # 添加功能 print("例:开始时间") start = time.time() self.f() # 执行函数 print("例:结束时间") print("记录操作时间、日志、缓存等用时操作 ----- 结束时间 - 开始时间",time.time() - start) @TaskA def func(): time.sleep(2) print("func") func()
# 不带参数函数
def TaskB(func) : # 添加功能 def inner(*args,**kwargs): print("例:开始时间") start = time.time() func() print("例:结束时间") print("记录操作时间、日志、缓存等用时操作 ----- 结束时间 - 开始时间",time.time() - start) return inner @TaskB def foo( ): time.sleep(1) print("foo") foo( )
# 带参数 def TaskC(text): # 最外层用于传入参数 def decorator(func) : # 用户传入方法 def inner(*args,**kwargs): # 添加功能 print("例:开始时间") start = time.time() # 执行参入函数 func(name="name") print() print("传入参数",text) print() print("例:结束时间") print("记录操作时间、日志、缓存等用时操作 ----- 结束时间 - 开始时间",time.time() - start) return inner return decorator @TaskC(text="我是参数") def fooc(name): time.sleep(1) print( "fooc",name) fooc()
原文:https://www.cnblogs.com/wanghong1994/p/14643387.html