1、编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
1 Juge=False 2 def Certification(func): 3 def inner(*args,**kwargs): 4 global Juge 5 if Juge: 6 ret = func(*args, **kwargs) 7 return ret 8 else: 9 username = input("username:") 10 password = input("password:") 11 if username == "xiaoming" and password == "110000": 12 Juge = True 13 ret = func(*args, **kwargs) 14 return ret 15 else: 16 print("登陆失败") 17 return inner
2、编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件
1 def wrapper(func): 2 def inner(*args,**kwargs): 3 with open("执行库","a+",encoding="utf-8") as f: 4 f.write(func.__name__+' ') 5 ret=func(*args,**kwargs) 6 return ret 7 return inner
3、编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果,实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
1 import os 2 from urllib.request import urlopen 3 def cache(func): 4 def inner(*args,**kwargs): 5 if os.path.getsize('web_cache'): 6 with open('web_cache','rb') as f: 7 return f.read() 8 ret = func(*args,**kwargs) #get() 9 with open('web_cache','wb') as f: 10 f.write(b'*********'+ret) 11 return ret 12 return inner