首先看一个例子
1 ''' 多个装饰器装饰一个函数 ''' 2 3 # 定义第一个装饰器 4 def set_func1(func): 5 def wrapper1(*args,**kwargs): 6 print('装饰内容开始1') 7 func(*args, **kwargs) 8 print('装饰内容结束1') 9 return wrapper1 10 11 12 # 定义第二个装饰器 13 def set_func2(func): 14 def wrapper2(*args,**kwargs): 15 print('装饰内容开始2') 16 func(*args, **kwargs) 17 print('装饰内容结束2') 18 return wrapper2 19 20 # 定义第二个装饰器 21 def set_func3(func): 22 def wrapper3(*args,**kwargs): 23 print('装饰内容开始3') 24 func(*args, **kwargs) 25 print('装饰内容结束3') 26 return wrapper3 27 28 29 30 31 @set_func1 32 @set_func2 33 @set_func3 34 def show(): 35 print('Show Run....') 36 37 show() 38 39 40 结果如下: 41 装饰内容开始1 42 装饰内容开始2 43 装饰内容开始3 44 Show Run.... 45 装饰内容结束3 46 装饰内容结束2 47 装饰内容结束1 48 49 进程已结束,退出代码 0
使用简易代码分析执行流程--->实质就是几层函数的嵌套
1 def wrapper1(): 2 print("wrapper1 start") # 第1步 3 wrapper2() # 第2步 4 print("wrapper1 end") # 第10步 5 6 7 8 def wrapper2(): 9 print("wrapper2 start") # 第3步 10 wrapper3() # 第4步 11 print("wrapper2 end") # 第9步 12 13 14 15 def wrapper3() 16 print("wrapper3 start") # 第5步 17 main_function() # 第6步 18 print("wrapper3 end") # 第8步 19 20 21 def main_func() 22 print("hello Python") # 第7步 23 24 main_func() # start
如果你和我有共同爱好,我们可以加个好友一起交流!
来源:https://www.cnblogs.com/ywk-1994/p/9502848.html