當前位置:
首頁 > 最新 > Python裝飾器是精通Python的第一道關卡!看大牛是怎麼理解它的!

Python裝飾器是精通Python的第一道關卡!看大牛是怎麼理解它的!

手寫裝飾器

現在我們要寫一個函數:

def add(x, y=10):return x + y

然後我們想看看運行的結果,於是寫了幾個 print 語句:

代碼馬上變得很複雜。但最重要的是,我們得寫一堆代碼(複製粘貼),程序員是懶惰的,所以我們就想到一些更簡單的方法,與其寫這麼多次,我們可以只寫一次代碼:

作為一個懶惰的程序員,我們立馬就發現了,有一個 「模式」 反覆出現,即執行一個函數,並計算這個函數的執行時間。於是我們就可以把這個模式抽象出來,用函數:

帶參數的裝飾器

我們知道下面兩種代碼是等價的:

@decdef func(...):...func = dec(func)

我們可以把它當成是純文本的替換,於是可以是這樣的:

類作為裝飾器

如果說 Python 里一切都是對象的話,那函數怎麼表示成對象呢?其實只需要一個類實現__call__ 方法即可。

小結

裝飾器中還有一些其它的話題,例如裝飾器中元信息的丟失,如何在類及類的方法上使用裝飾器等。但本文里我們主要目的是簡單介紹裝飾器的原因及一般的使用方法,能用上的地方就大膽地用上吧!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python調用MySQL模塊初試
如何使用Python Impyla客戶端連接Hive和Impala
Python高薪系統學習班,機不可失失不再來
最全Pycharm使用教程-(三)
最全Pycharm使用教程-(二)

TAG:Python |