在實際開發過程中,對已開發好的模塊代碼添加功能,但不能修改原代碼,不然違反了軟件開發中的“開發-封閉”原則 ,它規定已經實現的功能不允許被修改,但可以被擴展,即:
封閉:已實現的功能代碼塊不應該被修改
開放:對現有功能的擴展開放
Python在面向對象(OOP)的設計模式中,decorator被稱爲裝飾模式。OOP的裝飾模式需要通過繼承和組合來實現,而Python除了能支持OOP的decorator外,直接從語法層次支持decorator。可以用函數實現,也可以用類實現。decorator可以增強函數的功能,定義起來雖然有點複雜,但使用起來非常靈活和方便。
1、無參數裝飾器,即需要裝飾的函數不需要傳入參數。
2、有參數裝飾器,即需要裝飾的函數有傳入參數。
3、不定長參數裝飾器
4、對帶有返回值的函數裝飾
5、通用裝飾器,兼容上面4種情況
6、裝飾器裝參數
7、舉例,某個網站已成功上線一段時間,現在有個需求,需要對某些頁面只針對vip客戶開放,需要添加權限認證。