1. 程式人生 > >D20-05 函式閉包 為函式加認證 (再看幾遍)

D20-05 函式閉包 為函式加認證 (再看幾遍)

user_dic={'username':None,'login':False}

def auth_func(func):  #高階函式傳的是函式名
    def wrapper(*args,**kwargs):
        if user_dic['username'] and user_dic['login']:#先判斷有沒有使用者登入,登入狀態是不是True
            res = func(*args,**kwargs)
            return res
        username=input('使用者名稱:')
        passwd=input('密碼')
        if username =='sb' and passwd =='123': #已經輸入賬號密碼,所以需要記錄。
            user_dic['username']=username
            user_dic['login']=True
            res = func(*args,**kwargs)
            return res
        else:
            print('使用者名稱密碼輸入錯誤')
    return wrapper()
@auth_func
def  index():
    print('歡迎來到京東主頁')
@auth_func
def home():
    print('歡迎回家')
@auth_func
def shopping_car():
    print('購物車裡有【%s,%s】'%('茶','妹妹'))