1. 程式人生 > >函數閉包模擬session

函數閉包模擬session

als 輸入 in use def 驗證 true 閉包 log inpu

userlist = [
{‘name‘:‘doudou‘,‘passwd‘:‘123‘},
{‘name‘:‘chouchou‘,‘passwd‘:‘456‘},
{‘name‘:‘liuhaiquan‘,‘passwd‘:‘789‘},
{‘name‘:‘liuxue‘,‘passwd‘:‘2020‘}
]

current_list = {‘username‘:None,‘login‘:False} #定義一個空的全局變量

def jingdong(yanzheng):
def yonghu(*args,**kwargs):
if current_list[‘username‘] and current_list[‘login‘]: #判斷是否已經有用戶輸入
res = yanzheng(*args,**kwargs) #運行裝飾器
return res
username = input(‘用戶名: ‘).strip()
passwd = input(‘密碼: ‘).strip()
for user_dic in userlist:
if username == user_dic[‘name‘] and passwd == user_dic[‘passwd‘]:
current_list[‘username‘] = username
current_list[‘login‘] = True
res = yanzheng(*args,**kwargs) #運行裝飾器
return res
else: #如果for循環結束為止,還是沒有驗證成功,則打印密碼或用戶錯誤
print(‘用戶或密碼錯誤‘)
return yonghu

@jingdong
def desk(name):
print(‘歡迎來到京東 %s‘ %name)

@jingdong
def shopcar(name):
print(‘%s 的購物車裏有[%s,%s,%s]‘ %(name,‘水果‘,‘飲料‘,‘餅幹‘))

@jingdong
def mina(name):
print(‘顯示%s的主頁‘ %name)

desk(‘chouchou‘)
shopcar(‘dd‘)
mina(‘kl‘)

函數閉包模擬session