|
查阅了各方面资料,不都说多装饰器是按照从上往下执行吗?但是为什么执行结果却是从下往上呢?请看代码以及结果。
- def before(func):
- print("run yin before")
- def wrapper(*args,**kwargs):
- print("Before function called")
- return func(*args,**kwargs)
- return wrapper
- def after(func):
- print("run in after")
- def wrapper2(*args,**kwargs):
- print("after_func_above")
- result=func(*args,**kwargs)
- print("After function called",args,kwargs)
- return result
- return wrapper2
- @before
- @after
- def test(a,b):
- print(a+b)
- test(3,5)
复制代码 执行结果为:
- run in after
- run yin before
- Before function called
- after_func_above
- 8
- After function called (3, 5) {}
复制代码 如果是从上往下的话,第一条结果就应该是run in before,但为什么是run in after呢?谢谢大家 |
|