理解:
规律:
一个函数可以被多个装饰器装饰. @wrapper1 @wrapper2 def target(): print('我是目标') 规则和规律 wrapper1 wrapper2 TARGET wrapper2 wrapper1
- def wrapper1(fn): # fn: wrapper2.inner
- def inner(*args, **kwargs):
- print("这里是wrapper1 进入") # 1
- ret = fn(*args, **kwargs) # wrapper2.inner
- print("这里是wrapper1 出去") # 5
- return ret
- return inner
-
- def wrapper2(fn): # fn: target
- def inner(*args, **kwargs):
- print("这里是wrapper2 进入") # 2
- ret = fn(*args, **kwargs) # target
- print("这里是wrapper2 出去") # 4
- return ret
- return inner
-
-
- @wrapper1 # target = wrapper1(wrapper2.inner) => target: wrapp1.inner
- @wrapper2 # target = wrapper2(target) => target: wrapper2.inner
- def target():
- print('我是目标') # 3
-
- target()
结果:
