python基礎裝飾器 Python基礎 裝飾器

2021-10-11 07:34:26 字數 872 閱讀 4150

裝飾器的功能在很多語言中都有,名字也不盡相同,其實它體現的是一種設計模式,強調的是開放封閉原則,更多的用於後期功能公升級而不是編寫新的**。裝飾器不光能裝飾函式,也能裝飾其他的物件,比如類。

開放封閉原則:規定已經實現的功能**內部不允許被修改,但外部可以被擴充套件,即,封閉:已實現的功能**塊;開放:對擴充套件開放。

語法:上述例項解讀:

5. 再往下,碰到return res,返回值是個函式名,並且這個函式名會被賦值給foo這個被裝飾的函式,也就是foo = res。

6. 至此,當呼叫foo函式時,首先執行的時result函式的**,在本例中,首先列印『before』,然後執行func,也就是被裝飾函式foo,並將返回值賦給res變數,然後繼續執行result函式,列印『after』。最後返回res。

以上流程走完,既沒有修改foo程式**,也沒有更改其呼叫方式,就實現了在執行foo前後增加功能的需求。

裝飾器的引數傳遞:

被裝飾函式有乙個引數:

被裝飾函式有多個引數:

乙個函式被多個函式裝飾:

裝飾器例項

程式需求:

在不改變func_1函式(程式)定義和呼叫方式的基礎上,新增計時和使用者認證功能

使用者認證要求:

使用者最多嘗試3次登陸

當存在的使用者登陸失敗3次後,鎖定該使用者,限制登陸

程式**:

計時+登陸認證 裝飾器

驗證過程:

1. account檔案:存放使用者登陸資料

2. locked_list檔案:存放被鎖定使用者名稱

當前為空

3. 嘗試登陸正確的使用者

4. 嘗試不同使用者登陸失敗

5. 嘗試同一使用者登陸失敗

6. 嘗試同一使用者登陸失敗,但該使用者本身不存在

python基礎 裝飾器

裝飾器本質就是函式,功能是為其他函式新增附加功能。原則 不修改被修飾函式的源 不修改被修飾函式的呼叫方式 裝飾器的知識儲備 裝飾器 高階函式 函式巢狀 閉包 import time 定義乙個裝飾器計算函式執行時間 def timer func start time time.time res fun...

python基礎 裝飾器

裝飾器形成的過程 最簡單的裝飾器 有返回值的 有乙個引數 萬能引數 裝飾器的作用 原則 開放封閉原則 語法糖 裝飾器的固定模式 import time print time.time 獲取當前時間 time.sleep 10 讓程式在執行到這個位置的時候停一會兒 def timmer f 裝飾器函式...

Python基礎 裝飾器

裝飾器是程式開發中經常會用到的乙個功能,程式開發的基礎知識,用好了裝飾器,開發效率如虎添翼,所以這也是python面試中必問的問題,但對於好多初次接觸這個知識的人來講,這個功能有點繞,這個都不會,別跟人家說你會python,看了下面的文章,保證你學會裝飾器。裝飾器 decorator 首先我們需要知...