學習Python裝飾器,看這一篇文章就夠了


講 Python 裝飾器前,我想先舉個例子,雖有點污,但跟裝飾器這個話題很貼切。


談裝飾器前,還要先要明白一件事,Python 中的函數和 Java、C++不太同樣,Python 中的函數能夠像普通變量同樣當作參數傳遞給另一個函數,例如:



先來看一個簡單例子,雖然實際代碼可能比這複雜不少:

說到這裏。順便提醒下你們無論你是爲了Python就業仍是興趣愛好,記住:項目開發經驗永遠是核心,若是你缺新項目練習或者沒有python精講教程,能夠去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下能夠找到了,裏面不少新教程項目,還能夠跟老司機交流討教!
如今有一個新的需求,但願能夠記錄下函數的執行日誌,因而在代碼中添加日誌代碼:





簡單裝飾器



@ 語法糖




*args、**kwargs可能有人問,若是個人業務邏輯函數 foo 須要參數怎麼辦?好比:


咱們能夠在定義 wrapper 函數的時候指定參數:






好比:


這時,你就能夠把 wrapper 函數指定關鍵字函數:



帶參數的裝飾器




@use_logging(level="warn")等價於@decorator
類裝飾器



functools.wraps


例子:




裝飾器順序一個函數還能夠同時定義多個裝飾器,好比:




 總結:無論你是爲了Python就業仍是興趣愛好,記住:項目開發經驗永遠是核心,若是你缺新項目練習或者沒有python精講教程,能夠去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下能夠找到了,裏面不少新教程項目,還能夠跟老司機交流討教!

本文的文字及圖片來源於網絡加上本身的想法,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。python

相關文章
相關標籤/搜索