最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Python函數(shù)執(zhí)行前后增加額外的行為

 更新時(shí)間:2016年10月20日 16:39:38   作者:瓜園耕讀  
有的時(shí)候會(huì)需要在函數(shù)前后添點(diǎn)額外的功能(比如過(guò)濾、計(jì)時(shí)等)時(shí),以前總是首先想到裝飾器。最近學(xué)習(xí)了Python的上下文管理器,所以本文就給大家介紹了如何在Python函數(shù)執(zhí)行前后增加額外的行為,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。

首先來(lái)看一個(gè)小程序,這個(gè)是計(jì)量所花費(fèi)時(shí)間的程序,以下是以往的解決示例

from functools import wraps, partial
from time import time

def timing(func=None, frequencies=1):
 if func is None:
  # print("+None")
  return partial(timing, frequencies=frequencies)
 # else:
  # print("-None")

 @wraps(func)
 def _wrapper(*args, **kwargs):
  start_time = time()
  for t in range(frequencies):
   result = func(*args, **kwargs)
  end_time = time()
  print('運(yùn)行花費(fèi)時(shí)間:{:.6f}s。'.format(end_time-start_time))
  return result

 return _wrapper


@timing
def run():
 l = []
 for i in range(5000000):
  l.extend([i])
 return len(l)

運(yùn)行如下:

In [4]: run()
運(yùn)行花費(fèi)時(shí)間:2.383398s。
Out[4]: 5000000

(喜歡刨根問(wèn)底的可以去掉注釋,并思考預(yù)計(jì)會(huì)有什么樣的輸出)。

今天無(wú)意間看到了Python的上下文管理器(Context Manager),發(fā)現(xiàn)也非常不錯(cuò),其實(shí)這跟with語(yǔ)句是息息相關(guān)的,竟然以前一直未在意。

from time import time

def run2():
 l = []
 for i in range(5000000):
  l.extend([i])
 return len(l)

class ElapsedTime():
 def __enter__(self):
  self.start_time = time()
  return self

 def __exit__(self, exception_type, exception_value, traceback):
  self.end_time = time()
  print('運(yùn)行花費(fèi)時(shí)間:{:.6f}s。'.format(self.end_time - self.start_time))

with ElapsedTime():
 run2()

總結(jié)

初略看了一點(diǎn)官方文檔,上下文管理還是有點(diǎn)多內(nèi)容的。Python發(fā)展到現(xiàn)在,其實(shí)不簡(jiǎn)單了。說(shuō)簡(jiǎn)單,只是你自己不夠與時(shí)俱進(jìn),掌握的都是老式三板斧而已。所以,知識(shí)需要不斷更新,才能彌補(bǔ)自己的盲點(diǎn),以上就是本文的全部?jī)?nèi)容,希望能大家的學(xué)習(xí)或者工作帶來(lái)一定的幫助。

相關(guān)文章

  • matplotlib基礎(chǔ)繪圖命令之bar的使用方法

    matplotlib基礎(chǔ)繪圖命令之bar的使用方法

    這篇文章主要介紹了matplotlib基礎(chǔ)繪圖命令之bar的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python生成指定大小的文件兩種解決方案

    Python生成指定大小的文件兩種解決方案

    這篇文章主要介紹了Python生成指定大小的文件,這里提供兩種解決方案幫助python完成我們生成任意大小的文件,需要的朋友可以參考下
    2023-06-06
  • python os模塊在系統(tǒng)管理中的應(yīng)用

    python os模塊在系統(tǒng)管理中的應(yīng)用

    這篇文章主要介紹了python os模塊在系統(tǒng)管理中的應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解

    基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解

    今天小編就為大家分享一篇基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 詳解python 模擬豆瓣登錄(豆瓣6.0)

    詳解python 模擬豆瓣登錄(豆瓣6.0)

    這篇文章主要介紹了python模擬豆瓣登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python模塊WSGI使用詳解

    Python模塊WSGI使用詳解

    這篇文章主要為大家詳細(xì)介紹了Python模塊WSGI使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python添加進(jìn)度條tqdm進(jìn)階使用實(shí)例

    Python添加進(jìn)度條tqdm進(jìn)階使用實(shí)例

    這篇文章主要為大家介紹了Python添加進(jìn)度條tqdm進(jìn)階使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Python使用Dijkstra算法實(shí)現(xiàn)求解圖中最短路徑距離問(wèn)題詳解

    Python使用Dijkstra算法實(shí)現(xiàn)求解圖中最短路徑距離問(wèn)題詳解

    這篇文章主要介紹了Python使用Dijkstra算法實(shí)現(xiàn)求解圖中最短路徑距離問(wèn)題,簡(jiǎn)單描述了Dijkstra算法的原理并結(jié)合具體實(shí)例形式分析了Python使用Dijkstra算法實(shí)現(xiàn)求解圖中最短路徑距離的相關(guān)步驟與操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python基礎(chǔ)之輸入,輸出與高階賦值詳解

    Python基礎(chǔ)之輸入,輸出與高階賦值詳解

    這篇文章主要為大家介紹了Python基礎(chǔ)之輸入,輸出與高階賦值,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • python eventlet綠化和patch原理

    python eventlet綠化和patch原理

    這篇文章主要介紹了python eventlet綠化和patch原理,幫助大家更好的理解和學(xué)習(xí)python eventlet工具的使用,感興趣的朋友可以了解下
    2020-11-11

最新評(píng)論

磐安县| 长兴县| 山东| 松潘县| 玉田县| 翼城县| 宁波市| 航空| 苗栗县| 黔西县| 石阡县| 浠水县| 岚皋县| 从化市| 包头市| 静宁县| 唐河县| 方山县| 屯昌县| 土默特右旗| 大港区| 汝城县| 松桃| 攀枝花市| 沭阳县| 察雅县| 东丰县| 江陵县| 甘肃省| 明星| 怀集县| 太仆寺旗| 高唐县| 琼中| 喀喇沁旗| 全南县| 东明县| 桂东县| 渑池县| 潜江市| 安陆市|