Python教程之閉包和裝飾器的應用操作,高效利用時間,成就非凡

裝飾器和閉包常常為程式設計師們減少了很多程式碼量,在Python學習中,裝飾器和閉包是常用的兩個知識點。今天,我們一塊來學習一下。

裝飾器可以實現在程式碼執行期間修改函式的上下文,簡單來說就是,在不改變原函式的情況下,豐富原函式的功能;而閉包簡單來說就是,內層函式呼叫外層函式的變數,外層函式返回內層函式的引用。兩者也有著密不可分的關係!!!

閉包函式

閉包函式是函式巢狀、函式物件、名稱空間與作用域結合體

閉包中被內部函式引用的變數,不會因為外部函式結束而被釋放掉,而是一直存在記憶體中,直到內部函式被呼叫結束

說了這多理論,上程式碼。

需求:統計下載媒體檔案的時間(簡易版)

以上程式碼確實實現了統計下載時間的功能,問題來了,如果我有多個型別檔案下載函式,都需要統計時間呢?難道展現我們的“CV大法”?估計隔天就要被掃地出門了……

就沒有什麼辦法可以解決了嗎?當然有啦!先看程式碼

以上程式碼就是對裝飾器的引入,其中 time_record 就是裝飾器,download_movie 和 download_music 就是被裝飾的函式物件。

透過觀察,以上被裝飾的函式物件是沒有返回值,且沒有引數的。問題來了,假如 download_movie 等被裝飾物件是有返回值和引數,那該咋整?

不說廢話,繼續看程式碼

細心如你,裝飾器定義好了,但是每次呼叫都特別麻煩,有沒有一種比較便捷的呼叫方式呢?

噹噹噹當!當然有,那就是裝飾器的語法糖,聽起來就感覺使用非常甜,咋用呢?繼續看程式碼(由於之前程式碼已經實現了裝飾器,這裡就不重複展示了,只實現語法糖的程式碼)

裝飾器語法糖

注意:在使用時,裝飾器必須在被裝飾物件之前定義

怎麼樣?是不是感覺意猶未盡?是不是急著想自己練習一下呢?那就行動起來吧!!!

版權宣告:本文源自 網路, 於,由 楠木軒 整理釋出,共 721 字。

轉載請註明: Python教程之閉包和裝飾器的應用操作,高效利用時間,成就非凡 - 楠木軒