装饰器的@精髓

装饰器的一般写法

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)()调用结果一样

所以@其实就是把@后面的函数调用然后将被装饰的函数引用放进去

posted @ 2020-03-23 10:07  Barry东东和西西  阅读(141)  评论(0)    收藏  举报