#需求:京东购物前必需要登陆,而再次点击购物时,函数
# 在新的页面(函数)中,不须要再次输入信息。
# 怎么作到?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")