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

談裝飾器前,還要先要明白一件事,Python 中的函式和 Java、C++不太一樣,Python 中的函式可以像普通變數一樣當做引數傳遞給另外一個函式,例如:


先來看一個簡單例子,雖然實際代碼可能比這復雜很多:

現在有一個新的需求,希望可以記錄下函式的執行日志,于是在代碼中添加日志代碼:




簡單裝飾器


@ 語法糖



*args、**kwargs可能有人問,如果我的業務邏輯函式 foo 需要引數怎么辦?比如:

我們可以在定義 wrapper 函式的時候指定引數:





比如:

這時,你就可以把 wrapper 函式指定關鍵字函式:


帶引數的裝飾器



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


functools.wraps

例子:



裝飾器順序一個函式還可以同時定義多個裝飾器,比如:



總結:不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你缺新專案練習或者沒有python精講教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新教程專案,還可以跟老司機交流討教!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/163268.html
標籤:Python
上一篇:day13匿名函式
下一篇:實體011:養兔子
