2022-09-18 多個裝飾器使用的實例: 1 # 定義一個裝飾器 2 def make_p(func): 3 print("執行裝飾器make_p") 4 5 def inner(): 6 # 對已有函數增加新的功能 7 result = "<p>" + func() + "</p>" 8 # ...
2022-09-18
多個裝飾器使用的實例:
1 # 定義一個裝飾器 2 def make_p(func): 3 print("執行裝飾器make_p") 4 5 def inner(): 6 # 對已有函數增加新的功能 7 result = "<p>" + func() + "</p>" 8 # 和已有函數保持一致,如果已有函數有返回值,則這裡也加上返回值;如果已有函數有參數,那麼這裡也加上參數。 9 return result 10 11 return inner 12 13 # 定義第二個裝飾器 14 def make_div(func): 15 print("執行裝飾器make_div") 16 17 def inner(): 18 # 對已有函數增加新的功能 19 result = "<div>" + func() + "</div>" 20 # 和已有函數保持一致,如果已有函數有返回值,則這裡也加上返回值;如果已有函數有參數,那麼這裡也加上參數。 21 return result 22 23 return inner 24 25 # 設置裝飾器語法糖 26 @make_div 27 @make_p 28 # 原來的函數 29 def content(): 30 return "人生苦短,我用python!" 31 32 if __name__ == '__main__': 33 result = content() 34 print(result)
運行的結果如下:
由結果圖可知,多個裝飾器同時使用,會先執行內部函數,離原來函數距離最近的裝飾器,之後,再執行外層的裝飾器。