def outter_1(func1):
def inner_1(*args, **kwargs): # 使用不定长参数
print("inner_1内容")
func1(*args, **kwargs)
print("第一个装饰器-----1")
return inner_1
def outter_2(func2):
def inner_2(*args, **kwargs): # 使用不定长参数
print("inner_2内容")
func2(*args, **kwargs)
print("第二个装饰器-----2")
return inner_2
def outter_3(func3):
def inner_3(*args, **kwargs): # 使用不定长参数
print("inner_3内容")
func3(*args, **kwargs)
print("第三个装饰器-----3")
return inner_3
@outter_1
@outter_2
@outter_3
def show_1():
print("show_1")
show_1()
"""
多个装饰器加载的顺序
1.@outter_3:show_1原函数-->outter_3-->func3 = show_1原函数-->show_1指向了inner_3
2.@outter_2:inner_3-->outter_2-->func2 = inner_3-->show_1指向了inner_2
3.@outter_1: inner_2-->outter_1-->func1 = inner_2-->show_1最终指向了inner_1
所以多个装饰器的执行调用过程
show_1()-->inner_1()-->func1()-->inner_2()-->func2()-->inner_3()-->func3()-->show_1()原
"""
结论:从上往下执行
posted on
浙公网安备 33010602011771号