装饰器小题

mac2022-06-30  70

flage = 0 def wapper(fun):#fun是被装饰的函数 #wapper是给fun装饰函数的装饰器函数 def inner(*args,**kwargs):#接收任意类型的参数 global flage #局部变量变成全局变量 #登录功能 if flage==1: ret = fun(*args,**kwargs) #fun是被装饰的函数 return ret else: username=input('请输入用户名:') password=input('请输入密码') if username=='aaa'and password=='123456': flage=1#登录成功设置为1用global ret=fun(*args,**kwargs) return ret#函数fun返回值 else: print('登录失败') return inner#返回函数名() @wapper#等同于shopp_add=wapper(shopp_add) def shopp_add(): print('增加一个物品') @wapper#等于shopp_del=wapper(shopp_del) def shopp_del(): print('删除一个物品') shopp_add() shopp_del() 运行结果: 请输入用户名:Mr.Gao 请输入密码123456 增加一个物品 删除一个物品 def log(fun): def inner(*args,**kwargs): res=fun(*args,**kwargs) with open('log.txt','a') as f: #a代表给文件追加内容 f.write(fun.__name__+'\n') return res return inner @log#等同于shoplist_add=kwargs(shoplist_add) def shoplist_add(): print('增加一个物品') @log def shoplist_del(): print('删除一个物品') shoplist_add() shoplist_del() shoplist_add() shoplist_del() 运行结果: 增加一个物品 删除一个物品 增加一个物品 删除一个物品

转载于:https://www.cnblogs.com/gfhh/p/11575385.html

最新回复(0)