本篇內容主要講解“Python裝飾器的用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python裝飾器的用法”吧!
1. 定義
本質是函數,用來裝飾其他函數,為其他函數添加附加功能
2. 原則
a. 不能修改被裝飾函數的源代碼
b. 不能修改被裝飾的函數的調用方式
3. 實現裝飾器知識儲備
a. 函數就是變量
b. 高階函數
i. 把一個函數當作實參傳給另外一個函數,在不修改被裝飾函數源代碼情況下為其添加功能
ii. 返回值中包含函數名, 不修改函數的調用方式
c. 嵌套函數
高階函數+嵌套函數==》裝飾器
# Author: Lockegogo user, passwd = 'LK', '130914' def auth(auth_type): print('auth func:', auth_type) def outher_wrapper(func): def wrapper(*args, **kwargs): print('wrapper func:', *args, **kwargs) if auth_type == 'local': username = input('username:').strip() password = input('password:').strip() if user == username and password == passwd: print('\033[32;1mUser has passed authentication\033[0m') res = func(*args, **kwargs) return res else: exit('\033[32;1mInvalid Username or password\033[0m') elif auth_type == 'ldap': print('ldap,不會') return wrapper return outher_wrapper def index(): print('welcome to index page') @auth(auth_type='local') # home = outher_wrapper(home) def home(): print('welcome to home page') return 'from home' @auth(auth_type='ldap') def bbs(): print('welcome to bbs page') index() print(home()) bbs() Decorator
到此,相信大家對“Python裝飾器的用法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。