python多个装饰器执行顺序
时间: 2023-07-12 20:42:55 浏览: 65
在Python中,如果一个函数使用了多个装饰器,那么它们的执行顺序是从下往上的。也就是说,最下面的装饰器最先执行,最上面的装饰器最后执行,函数执行完后,装饰器的执行顺序则与装饰器定义的顺序相反。
例如,下面是一个使用三个装饰器的示例:
``` python
def decorator1(func):
def wrapper(*args, **kwargs):
print("Decorator 1 before function execution")
func(*args, **kwargs)
print("Decorator 1 after function execution")
return wrapper
def decorator2(func):
def wrapper(*args, **kwargs):
print("Decorator 2 before function execution")
func(*args, **kwargs)
print("Decorator 2 after function execution")
return wrapper
def decorator3(func):
def wrapper(*args, **kwargs):
print("Decorator 3 before function execution")
func(*args, **kwargs)
print("Decorator 3 after function execution")
return wrapper
@decorator1
@decorator2
@decorator3
def my_function():
print("Function execution")
my_function()
```
输出结果为:
```
Decorator 3 before function execution
Decorator 2 before function execution
Decorator 1 before function execution
Function execution
Decorator 1 after function execution
Decorator 2 after function execution
Decorator 3 after function execution
```
可以看到,装饰器3最先执行,然后是装饰器2,最后是装饰器1。而函数执行完后,装饰器的执行顺序则与装饰器定义的顺序相反,即装饰器1最先执行,然后是装饰器2,最后是装饰器3。