1. 程式人生 > 實用技巧 >python基礎-裝飾器(四)模擬jd商城加上驗證

python基礎-裝飾器(四)模擬jd商城加上驗證

def index():
    print('歡迎來的jd主頁')

def home():
    print('歡迎回家')

def shopping_car():
    print('購物車裡有[%s,%s,%s]'%('奶茶','妹妹','娃娃'))

index()
home()
shopping_car()

為這段程式碼加上驗證

state_dict = {'user_name': None, 'login': False}  # 記錄登入狀態,避免多次登入


def auth_func(func):
    def wrapper(*args, **kwargs):
        
if state_dict['user_name'] and state_dict['login']: # 如果不是false,可登陸 res = func(*args, **kwargs) return res user_name = input('請輸入使用者名稱:').strip() pass_wd = input('請輸入密碼:').strip() if user_name == 'alex' and pass_wd == '123': state_dict['user_name
'] = user_name state_dict['login'] = True #登陸後改變狀態 res = func(*args, **kwargs) return res else: print('使用者名稱或密碼錯誤') return wrapper @auth_func # index=auth_func(index) def index(): print('歡迎來的jd主頁') @auth_func def home(): print
('歡迎回家') @auth_func def shopping_car(): print('購物車裡有[%s,%s,%s]' % ('奶茶', '妹妹', '娃娃')) index() home() shopping_car()