装饰器链:
一个函数可以被多个装饰器修饰
- 构建函数时的逻辑 由内向外 执行
- 添加在主函数之前的逻辑 由外向内 执行
- 添加在主函数之后的逻辑 由内向外执行
def wrapper01(func):
print('set_01')
def wrapper(*args, **kwargs):
print('run_01')
result = func(*args, **kwargs)
print('end_01')
return result
return wrapper
def wrapper02(func):
print('set_02')
def wrapper(*args, **kwargs):
print('run_02')
result = func(*args, **kwargs)
print('end_02')
return result
return wrapper
@wrapper01
@wrapper02
def say_hi():
print('HI !')
if __name__ == '__main__':
say_hi()
set_02, set_01是在构建 say_hi 函数的时候就执行了,与最后运行say_hi()函数没有任何关系
|