您的位置:首页 > 编程语言 > Python开发

python 多个装饰器的执行顺序

2019-05-12 22:35 399 查看

前提,装饰器的执行顺序是自下而上,采用的是就近原则。所以说先执行的是最近的一个装饰器,所以一般我们web登陆验证都放在最近的,而我会把捕捉异常放在最外面。

两个例子带你理解

from functools import wraps

def a(func):
print('11111')
@wraps(func)
def wrapper(*args,**kwargs):
print('a装饰器被执行')
func(*args,**kwargs)
print('a装饰器执行结束')
return wrapper

def b(func):
print('22222')
@wraps(func)
def wrapper(*args,**kwargs):
print('b装饰器被执行')
func(*args,**kwargs)
print('b装饰器执行结束')
return wrapper

@b
@a
def b():
print('ss')

b()


我们看结果可以发现,函数自上而下执行,装饰器回先被执行所以我们看一看到111111和22222被打印,其次从输出的字符串我们也可以清楚的看到a装饰器是在函数执行第一个会装饰的,其次是b。我们可以根据自己的需求选择。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: