首先看一个例子
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
如果你和我有共同爱好,我们可以加个好友一起交流!