1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 dl = False #定义一个标杆,用于判断条件 2 def login(func): 3 def inner(*args,**kwargs): 4 global dl #全局变量 5 if dl: #如果为真则执行 6 rel = func() 7 return rel 8 else: 9 username = input("请输入用户名:") 10 password = input("请输入密码:") 11 if username == "wzc27229" and password == "123456": 12 dl = True 13 rel = func() 14 return rel 15 else: 16 print("输入错误") 17 return inner 18 19 @login 20 def add_goods(*args,**kwargs): 21 print("添加商品") 22 23 @login 24 def del_goods(*args,**kwargs): 25 print("移除商品") 26 27 add_goods() 28 del_goods()
2.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件
1 def wapper(func): 2 def inner(*args,**kwargs): 3 with open('log', 'a', encoding='utf-8') as f: #打开文件log,以追加的方式 4 f.write(func.__name__+' ') #获取函数名称 5 file = func() 6 return file 7 return inner 8 9 @wapper 10 def add_goods(): 11 print("添加商品") 12 13 @wapper 14 def del_goods(): 15 print("移除商品") 16 17 add_goods() 18 add_goods() 19 add_goods()