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