装饰器的@精髓
装饰器的一般写法
from funtools import wraps
def deco(func):
@wraps(func)
def inner(*args, **kwargs):
# 里面写逻辑判断
return func(*args, **kwargs)
return inner
@deco
def test():
pass
# 上面装饰器调用test() ===== 和没有@的时候test() = deco(test)()调用结果一样
# 所以@其实就是把@后面的函数调用然后将被装饰的函数引用放进去