python_20_装饰器_高阶函数的使用_02

登陆验证代码.

 1 #用户验证功能,不修改源代码,使用装饰器。
 2 user_dic={'username':None,'login':False}  #定义全局变量
 3 
 4 def auth_func(func):
 5     def wrapper(*args,**kwargs):
 6         if user_dic['username'] and user_dic['login']:
 7             res = func(*args, **kwargs)
 8             return res
 9         user_name = input('用户名:').strip()  #删除首尾空格
10         pass_wd = input('用户密码:').strip()
11         if user_name == 'w' and pass_wd == '123':
12            user_dic['username'] = user_name
13            user_dic['login'] = True
14            res = func(*args, **kwargs)
15            return res
16         else:
17             print('用户名或密码输入错误')
18 
19     return wrapper
20 
21 @auth_func
22 def index():
23   print('1234564897')
24   return 5
25 
26 @auth_func
27 def home(name):
28     print('%s欢迎回家'%name)
29 @auth_func
30 def shopping_car(name):
31     print('%s购物车里面有【%s,%s,%s】'%(name,'手机','笔记本','数码相机'))
32 
33 index()
34 
35 home('123')
36 shopping_car('产品经理')
 1 user_list=[
 2     {'name':'alex','passwd':'123'},
 3     {'name':'linhaifeng','passwd':'456'},
 4     {'name':'wupeiqi','passwd':'789'},
 5     {'name':'yuanhao','passwd':'123'},
 6 ]
 7 # for user_dic in user_list:    #遍历列表字典
 8 #    # print(user_dic.keys(),user_dic.values())
 9 #     a = user_dic['name']
10 #     b = user_dic['passwd']
11 #     print(a)
12 #     print(b)
13 
14 #用户验证功能,不修改源代码,使用装饰器。
15 current_dic={'username':None,'login':False}  #定义全局变量
16 
17 def auth_func(func):
18     def wrapper(*args,**kwargs):
19         if current_dic['username'] and current_dic['login']:
20             res = func(*args, **kwargs)
21             return res
22 
23         user_name = input('用户名:').strip()  #删除首尾空格
24         pass_wd = input('用户密码:').strip()
25 
26         for user_dic in user_list:           #遍历列表字典(字典包含账号,密码)
27             if user_name == user_dic['name'] and pass_wd == user_dic['passwd']:
28                 current_dic['username'] = user_name       #保存全局变量
29                 current_dic['login'] = True                #保存全局变量
30                 res = func(*args, **kwargs)
31                 return res
32         else:
33             print('用户名或者密码错误')
34 
35     return wrapper
36 
37 @auth_func
38 def index():
39   print('1234564897')
40   return 5
41 
42 @auth_func
43 def home(name):
44     print('%s欢迎回家'%name)
45 
46 @auth_func
47 def shopping_car(name):
48     print('%s购物车里面有【%s,%s,%s】'%(name,'手机','笔记本','数码相机'))
49 
50 index()
51 print('用户---',current_dic)
52 home('123')
53 print('用户---',current_dic)
54 shopping_car('产品经理')
  • 增加验证方式

 1 #认证方式
 2 user_list=[
 3     {'name':'alex','passwd':'123'},
 4     {'name':'linhaifeng','passwd':'456'},
 5     {'name':'wupeiqi','passwd':'789'},
 6     {'name':'yuanhao','passwd':'123'},
 7 ]
 8 # for user_dic in user_list:    #遍历列表字典
 9 #    # print(user_dic.keys(),user_dic.values())
10 #     a = user_dic['name']
11 #     b = user_dic['passwd']
12 #     print(a)
13 #     print(b)
14 
15 #用户验证功能,不修改源代码,使用装饰器。
16 current_dic={'username':None,'login':False}  #定义全局变量
17 def auth(auth_type='filedb'):
18     def auth_func(func):
19          def wrapper(*args,**kwargs):
20              print('认证方式:', auth_type)
21              if auth_type == 'filedb':
22                 if current_dic['username'] and current_dic['login']:
23                     res = func(*args, **kwargs)
24                     return res
25                 user_name = input('用户名:').strip()  #删除首尾空格
26                 pass_wd = input('用户密码:').strip()
27                 for user_dic in user_list:           #遍历列表字典(字典包含账号,密码)
28                     if user_name == user_dic['name'] and pass_wd == user_dic['passwd']:
29                         current_dic['username'] = user_name       #保存全局变量
30                         current_dic['login'] = True                #保存全局变量
31                         res = func(*args, **kwargs)
32                         return res
33                 else:
34                     print('用户名或者密码错误')
35              elif auth_func == 'ldap':
36                 print('未知认证方式')
37                 #res = func(*args, **kwargs)
38                 #return res
39              else:
40                 print('无效认证方式')
41                 #res = func(*args, **kwargs)
42                 #return res
43          return wrapper
44     return auth_func
45 
46 @auth(auth_type='filedb')  #auth_func=auth(auth_type='filedb')-->@auth_func 附加了一个auth_type  --->index=auth_func(index)
47 def index():
48   print('欢迎来到京东首页')
49   return 5
50 
51 @auth(auth_type='ldap')
52 def home(name):
53     print('%s欢迎回家'%name)
54 
55 @auth(auth_type='ssss')
56 def shopping_car(name):
57     print('%s购物车里面有【%s,%s,%s】'%(name,'手机','笔记本','数码相机'))
58 
59 index()
60 #print('用户---',current_dic)
61 home('小明')
62 #print('用户---',current_dic)
63 shopping_car('产品经理')

 

posted @ 2018-09-20 22:04  不灭一辉  阅读(100)  评论(0)    收藏  举报