Python基礎12-裝飾器
阿新 • • 發佈:2018-09-20
閉包 swd lse ext rap urn 狀態 justin 重新登錄
#用修飾器模擬驗證功能 user_list=[ {‘user‘:‘alex‘,‘passwd‘:‘123‘}, {‘user‘:‘justin‘,‘passwd‘:‘123‘}, {‘user‘:‘balley‘,‘passwd‘:‘123‘} ] user_tag = {‘username‘:None,‘login‘:False} def login(func): def wrapper(*args,**kwargs):if user_tag[‘username‘] and user_tag[‘login‘]: res = func(*args,**kwargs) return res name = input(‘請輸入用戶名:‘).strip() passwd = input(‘請輸入您的密碼:‘).strip() for name_dic in user_list: if name_dic[‘user‘]==name and name_dic[‘passwd‘]==passwd: #記住登錄狀態,調用其他函數時不用再重新登錄user_tag[‘username‘] = name_dic[‘user‘] user_tag[‘login‘] = True res = func(*args, **kwargs) return res else: print(‘用戶名或賬號密碼錯誤‘) return wrapper @login #相當於home = login(home) def home(name,x=‘!!!‘): print(‘親愛的%s:歡迎回家%s‘ %(name,x)) @login def buycar(): print(‘這是你的購物車‘) @login def order(): print(‘這是你的訂單‘) home(‘alex‘,x=‘!‘) buycar() 輸出結果: 請輸入用戶名:alex 請輸入您的密碼:123 親愛的alex:歡迎回家! 這是你的購物車
Python基礎12-裝飾器