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