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

喜夏-厌秋 提交于 2020-02-13 18:06:50

首先看一个例子

 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

 

 

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!