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