python编程系列---多个装饰器装饰一个函数的执行流程


首先看一个例子

 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

 

 

如果你和我有共同爱好,我们可以加个好友一起交流!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM