欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python裝飾器練習題及答案

 更新時間:2019年11月01日 11:52:54   作者:故俗  
這篇文章主要介紹了python裝飾器練習題及答案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了python裝飾器練習題及答案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一:編寫裝飾器,為多個函數(shù)加上認證的功能(用戶的賬號密碼)

要求登錄成功一次,后續(xù)的函數(shù)都無需輸入用戶名和密碼

FLAG=False#此時還未登錄 全局變量 寫這個步驟的意義在于:方便 知道已經登錄成功了,就不再重復登錄

def login(func):#為多個函數(shù)加上的認證功能
  def inner(*args,**kwargs):#加上裝飾器
    global FLAG#給函數(shù)內的全局變量賦值
    if FLAG:
      ret = func(*args, **kwargs) # func就是被裝飾的函數(shù)
      return ret
  #'''寫登錄程序'''
    else:
      username=input('親輸入你的名字:')
      password=input('親輸入你的密碼:')
      if username=='lxx' and password=='123':
        FLAG=True
        ret=func(*args,**kwargs)   #func就是被裝飾的函數(shù)
        return ret
      else:
        print('錯誤,登錄失敗')
  return inner

@login
def shoplist_add(): #兩個函數(shù)有不同的功能
  print('增加一件物品')

@login
def shoplist_del():
  print('刪除一件物品')

shoplist_add()
shoplist_del()

二:編寫裝飾器,為多個函數(shù)加上記錄調用功能,要求每次調用函數(shù)都將被調用的函數(shù)名稱寫入文件

def log(func):
  def inner(*args,**kwargs):
    with open('log','a',encoding='utf-8') as f:
      f.write(func.__name__)#每次調用函數(shù)都將被調用的函數(shù)名稱寫入文件
    ret=func(*args,**kwargs)
    return ret
  return inner

@log
def shoplist_add(): #兩個函數(shù)有不同的功能
  print('增加一件物品')

@log
def shoplist_del():
  print('刪除一件物品')

shoplist_add()
shoplist_del()

三:進階作業(yè):

1.編寫下載網頁內容的函數(shù),要求功能是:用戶傳入一個URL,函數(shù)返回下載頁面的結果

2.為題目一編寫裝飾器,實現(xiàn)緩存網頁內容的功能

3.具體:實現(xiàn)下載的頁面存放與文件中,如果文件內有值(文件大小不為零),就優(yōu)先從文件中讀取網頁內容

import os
from urllib.request import urlopen
def cache(func):
  def inner(*args,**kwargs):
    if os.path.getsize('log'):#查看文件大小 如果不為零為 判斷文件中是否有內容
      with open('log','rb') as f:
        return f.read()
    ret=func(*args,**kwargs)#請求網頁的函數(shù)
    with open('log','wb') as f: #wb不需要encoding='utf-8'
      f.write(b'****vfd**' + ret) #下載的頁面存放在文件中 將請求的結果寫入文件
    return ret
  return inner

@cache
def get(url):
  code=urlopen(url).read
  return code

ret=get('https://shimo.im/docs/VN0BLgAIBdMVSa4S/read')
print(ret)
ret=get('https://shimo.im/docs/VN0BLgAIBdMVSa4S/read')
print(ret)
ret=get('https://shimo.im/docs/VN0BLgAIBdMVSa4S/read')
print(ret)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python中異常報錯處理方法匯總

    python中異常報錯處理方法匯總

    之前在學習python的時候有整理過python異常處理的文章,不夠簡單也不夠完整,所以決定再整理一篇,算做補充,大家學習一下,就可以自己思考解決方法了,希望對大家能夠有所幫助
    2016-11-11
  • python webp圖片格式轉化的方法

    python webp圖片格式轉化的方法

    這篇文章主要為大家詳細介紹了python webp圖片格式轉化的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python?arrow?更好的日期時間模塊

    Python?arrow?更好的日期時間模塊

    這篇文章主要為大家介紹Python的arrow日期時間模塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 關于python3安裝pip及requests庫的導入問題

    關于python3安裝pip及requests庫的導入問題

    小編最近快畢業(yè)了,閑著無事學習下python的內容在學習到requsets庫的導入問題時遇到一些問題,通過查找相關資料問題順利解決,今天小編把問題解決思路及注意事項分享給大家供大家參考學習
    2021-05-05
  • 人工智能——K-Means聚類算法及Python實現(xiàn)

    人工智能——K-Means聚類算法及Python實現(xiàn)

    這篇文章主要介紹了人工智能——K-Means聚類算法及Python實現(xiàn),一個能夠找到我圈出的這?些點集的算法,就被稱為聚類算法,下面就來看看文章具體的介紹吧
    2022-01-01
  • python3.6使用pickle序列化class的方法

    python3.6使用pickle序列化class的方法

    今天小編就為大家分享一篇python3.6使用pickle序列化class的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 如何向scrapy中的spider傳遞參數(shù)的幾種方法

    如何向scrapy中的spider傳遞參數(shù)的幾種方法

    這篇文章主要介紹了如何向scrapy中的spider傳遞參數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 解決Pymongo insert時會自動添加_id的問題

    解決Pymongo insert時會自動添加_id的問題

    這篇文章主要介紹了解決Pymongo insert時會自動添加_id的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Python小實例混合使用turtle和tkinter讓小海龜互動起來

    Python小實例混合使用turtle和tkinter讓小海龜互動起來

    Tkinter模塊("Tk 接口")是Python的標準Tk GUI工具包的接口.Tk和Tkinter可以在大多數(shù)的Unix平臺下使用,同樣可以應用在Windows和Macintosh系統(tǒng)里.Tk8.0的后續(xù)版本可以實現(xiàn)本地窗口風格,并良好地運行在絕大多數(shù)平臺中
    2021-10-10
  • python GUI模擬實現(xiàn)計算器

    python GUI模擬實現(xiàn)計算器

    這篇文章主要為大家詳細介紹了python GUI模擬實現(xiàn)計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評論