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()原 """
结论:从上往下执行
标签:函数,show,--,修改,inner,print,outter,装饰,def From: https://www.cnblogs.com/boye169/p/18397940