裝飾器練習
阿新 • • 發佈:2018-08-05
輸入 req pan rom **kwargs utf-8 get per get()
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__+‘\n‘) 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
裝飾器練習