装饰器作业

 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码

 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()
View Code

 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__+'\n')     #获取函数名称
 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()

猜你喜欢

转载自www.cnblogs.com/wzc27229/p/10993915.html
今日推荐