1 dic = {
2 'username':None,
3 'status':False #定义一个字典 status : False 为了改变函数执行的方向。
4 }
5
6
7 def wrapper(f):
8 def inner(*args,**kwargs):
9 if dic['status'] == True: #若 status = True 则直接执行函数无需再次认证。
10 ret = f(*args,**kwargs)
11 return ret
12 else:
13 i = 0
14 while i<3: # 三次登录功能
15 username = input('请输入你的用户名:').strip()
16 password = input('请输入你的密码:').strip()
17 with open('log1',encoding='utf-8') as f1:
18 for j in f1:
19 j_li = j.strip().split()
20 if username == j_li[0] and password == j_li[1]:
21 dic['username'] = username #改变字典里的 username
22 dic['status'] = True #改变status 的 bool 值 为了改变下次函数进入的方向。
23 ret = f(*args,**kwargs)
24 return ret
25 else:
26 print('账号或密码错误,你还有%d次机会请重新输入...' % (2-i))
27 i += 1
28 return inner
29 @wrapper
30 def article():
31 print('文章')
32 @wrapper
33 def diary():
34 print('日记')
35 @wrapper
36 def comment():
37 print('评论')
38 @wrapper
39 def file():
40 print('文件')
41 article()
42 diary()
43 comment()
44 file()