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