第四次記錄!!!Python裝飾器
阿新 • • 發佈:2018-11-06
裝飾器並不是什麼新功能,而是一種模式,通過高階函式和巢狀函式來完成的。
當要對一個函式新增新內容時要求1、不能修改到原函式程式碼
2、不能修改呼叫此函式的呼叫方式
優點:當想對多個網站新增功能時,可以通過裝飾器來新增功能,同而不修改到原始碼。
缺點:有時函式巢狀太多對閱讀者理解加大了難度。
今天完成的程式碼:
import time user,passwd = 'alex','abc123' def auth(auth_type): print('auth func:',auth_type) def outer_wrapper(func): def wrapper(*args, **kwargs): print("wrapper func args:", *args, **kwargs) if auth_type == "local": username = input("Username:").strip() password = input("Password:").strip() if user == username and passwd == password: print("登入成功") return func(*args, **kwargs) # from home else: exit("登陸失敗") elif auth_type == "ldap": print("搞毛線,不會。。。。") return wrapper return outer_wrapper def index(): print("welcome to index page") @auth(auth_type="local") # home = wrapper() def home(): print("welcome to home page") return "from home" @auth(auth_type="ldap") def bbs(): print("welcome to bbs page") print(home()) bbs()