# 不带参数类函数
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()
![](https://img2020.cnblogs.com/blog/1781001/202104/1781001-20210411115450975-311980294.png)
# 不带参数函数
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( )
![](https://img2020.cnblogs.com/blog/1781001/202104/1781001-20210411115509688-1773640722.png)
# 带参数
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://img2020.cnblogs.com/blog/1781001/202104/1781001-20210411115809592-1529671970.png)