1.装饰器进阶 -- 双层装饰器
先直接上代码,咱们在来分析。
1 USER_INFO = {} 2 3 def check_login(func): 4 def inner(*args,**kwargs): 5 if USER_INFO.get("is_login",None): 6 ret = func(*args,**kwargs) 7 return ret 8 else: 9 print("请登录") 10 return inner 11 12 13 def check_admin(func): 14 def inner(*args,**kwargs): 15 if USER_INFO.get("user_type",None) == 2: 16 ret = func(*args,**kwargs) 17 return ret 18 else: 19 print("无权查看") 20 return inner 21 22 23 def login(): 24 userinput = input("请输入用户名: ") 25 pwdinput = input("请输入密码: ") 26 if userinput == "lk" and pwdinput == "123": 27 USER_INFO["is_login"] = True 28 elif userinput == "liukai" and pwdinput == "234": 29 USER_INFO["is_login"] = True 30 USER_INFO["user_type"] = 2 31 index() 32 33 34 @check_login 35 @check_admin 36 def index(*args,**kwargs): 37 print("哈喽,管理员大大") 38 39 40 def main(): 41 while True: 42 userinput = input("请输入:1,管理;2,登陆: ") 43 userinput = int(userinput) 44 if userinput == 1: 45 index() 46 elif userinput == 2: 47 login() 48 49 main()
执行结果如下:
1 请输入:1,管理;2,登陆: 1 2 请登录 3 请输入:1,管理;2,登陆: 2 4 请输入用户名: lk 5 请输入密码: 123 6 无权查看 7 请输入:1,管理;2,登陆: 2 8 请输入用户名: liukai 9 请输入密码: 234 10 哈喽,管理员大大
程序剖析:
时间: 2024-10-29 10:04:17