叠加装饰器
当一个函数叠加了多个装饰器后,程序会如何运行呢?
叠加装饰器:
在同一个被装饰对象中,添加多个装饰器,并执行。
@装饰1
@装饰2
@装饰3
def 被装饰对象():
pass
注意: 装饰器在调用被装饰对象时才会执行添加的功能。
装饰的顺序:由下到上(被包裹)
执行的顺序:由上倒下(贯穿)
def wrapper1(func): def inner1(*args, **kwargs): print('我是inner1') res = func(*args, **kwargs) print('我是inner111111111111') return res return inner1 def wrapper2(func): def inner2(*args, **kwargs): print('我是inner2') res = func(*args, **kwargs) print('我是inner2222222') return res return inner2 @wrapper2 @wrapper1 def func1(): print('我是func1!!!!!!!!!1') func1()
输出为:
我是inner2 我是inner1 我是func1!!!!!!!!!1 我是inner111111111111 我是inner2222222