装饰器的@精髓

装饰器的一般写法

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东东和西西  阅读(125)  评论(0编辑  收藏  举报