#需求:京東購物前必需要登陸,而再次點擊購物時,函數
# 在新的頁面(函數)中,不須要再次輸入信息。
# 怎麼作到?ui
#僞代碼描述問題所在 假設在文件中,user-zhaowei;passwd-123 def login(): usename = input("usename:") password = input("password:") if user == usename and password==passwd: print("welcome") @login def home(): print("...") @login def home2(): print("...") @login def home3(): print("...")
# 如今在每一個功能模塊,都要調用信息登陸函數,
# 未免太麻煩,怎樣作就簡單了?
# 只要登陸一次,第二次檢測是否登陸便可。
# 或者說,每次先檢驗是否登陸。spa
#建立一個狀態標記,標記登陸狀態 login_status = False def login(): if not login_status: #進行登陸 login_status = True else: #pass
具體實現代碼code
logstate = False def loger(ways): def log(function): def inner(): global logstate # global ways if logstate is False: username = input("輸入用戶姓名:") password = input("輸入用戶密碼:") # 在文件中找信息: flag = False # 判斷是否找到用戶信息的標記 # 根據參數,查找不一樣文件 if ways == 'weixin': open_file = '1.txt' elif ways == 'jindong': open_file = '2.txt' with open(open_file, 'r', encoding="utf-8") as file_JD: for i in file_JD: # 取出每一行數據,將數據轉化到字典中 a = i.split('-') if a[0] == username and a[1] == password: flag = True break if flag is True: function() logstate = True else: function() return inner return log # 各個功能函數 @loger("weixin") def home(): print("you are in home") @loger("jindong") def finance(): print("you are in finance") @loger("weixin") def book(): print("you are in book") # 1展現現有的欄目 print('''1.home 2.finance 3.book ''') # 2while中:用戶選擇服務,進入服務 while True: number = input("輸入您所需的服務:") if number == '1': # 調用home函數 home() if number == '2': # 調用home函數 finance() if number == '3': # 調用home函數 book() if number == ':wq': exit("now you are quit")