一个函数多个装饰器

例:

def wrapper(f):
    def inner():
        print('aike1,你好')
        ret = f()
        print('aike2,你好')
        return ret
    return inner

def wrapper1(f):
    def inner1():
        print('艾克1,你好')
        ret = f()
        print('艾克2,你好')
        return ret
    return inner1

@wrapper1
@wrapper
def func():
    print('in f')
    return '哈哈哈哈'
print(func())


#打印:
艾克1,你好
aike1,你好
in f
aike2,你好
艾克2,你好
哈哈哈哈

 执行顺序:

打印规律:语法糖开始从上至下到被装饰函数的返回值,再从下至上打印;被装饰函数的返回值最后打印;
执行规律:全局从上至下,语法糖找下边一层的被装饰函数,没找到不向下找,执行下一层的函数糖(挨着被装饰函数的语法糖优先执行),执行完后依次向上执行。执行时,需要注意函数参数的不断变化

猜你喜欢

转载自www.cnblogs.com/aizhinong/p/11367863.html
今日推荐