Python contextlib模塊使用示例
看這個模塊要先看with as的用法,最常用的方法就是打開一個文件:
with open(“filename”) as f:
f.read()
with可以調(diào)用一個上下文管理器,產(chǎn)生運行時的上下文環(huán)境。上下文管理器主要定義兩個方法,__enter__,__exit__。__enter__返回上下文里操作的對象,如f。__exit__是銷毀對象和異常處理。
contextlib模塊對外有三個接口,
contextmanager裝飾器,裝飾的函數(shù)必須是一個生成器。然后返回一個函數(shù),在函數(shù)調(diào)用的時候返回一個上下文管理器。
nested為了一次調(diào)用多個上下文管理器的時候用,將所有上下文管理器里的__enter__放到vars里,一次yield返回,然后unpack。就產(chǎn)生多個對象了。__exit__都放到exits列表里,在finally里統(tǒng)一調(diào)用,這些__exit__在調(diào)用上下文管理器產(chǎn)生異常時,如何處理。如果返回false,將會把異常繼續(xù)拋出,返回true則不會拋出異常。
closing,這個用過,沒想到的是竟然是個類,而不是個函數(shù)。就是把有close方法卻沒有__exit__方法的對象變成一個上下文管理器。代碼很簡單:
class closing(object):
def __init__(self, thing):
self.thing = thing
def __enter__(self):
return self.thing
def __exit__(self, *exc_info):
self.thing.close()
相關文章
python中pandas對多列進行分組統(tǒng)計的實現(xiàn)
分組統(tǒng)計在很多時候都需要用到,可以實現(xiàn)很多數(shù)據(jù)庫函數(shù)的功能。本文主要介紹了python中pandas對多列進行分組統(tǒng)計的實現(xiàn),感興趣的可以了解一下2021-06-06
使用Python 統(tǒng)計文件夾內(nèi)所有pdf頁數(shù)的小工具
這篇文章主要介紹了Python 統(tǒng)計文件夾內(nèi)所有pdf頁數(shù)的小工具,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Python3.8 + Tkinter: Button設置image屬性不顯示的問題及解決方法
這篇文章主要介紹了Python3.8 + Tkinter: Button設置image屬性不顯示的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Django用戶注冊并自動關聯(lián)到某數(shù)據(jù)表條目的實現(xiàn)步驟
當一個新用戶注冊并且你想要自動關聯(lián)到特定的Box條目(假設其ID為1)時,下面給大家分享完整實現(xiàn)流程和步驟,對Django關聯(lián)數(shù)據(jù)表條目實現(xiàn)代碼感興趣的朋友跟隨小編一起看看吧2017-04-04
基于Python實現(xiàn)web網(wǎng)頁內(nèi)容爬取的方法
在日常學習和工作中,我們經(jīng)常會遇到需要爬取網(wǎng)頁內(nèi)容的需求,今天就如何基于Python實現(xiàn)web網(wǎng)頁內(nèi)容爬取進行講解,感興趣的朋友一起看看吧2024-12-12

