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

Python contextlib模塊使用示例

 更新時(shí)間:2015年02月18日 15:39:37   投稿:junjie  
這篇文章主要介紹了Python contextlib模塊使用示例,本文著重使用contextlib模塊產(chǎn)生一個(gè)上下文管理器,需要的朋友可以參考下

看這個(gè)模塊要先看with as的用法,最常用的方法就是打開(kāi)一個(gè)文件:

復(fù)制代碼 代碼如下:

with open(“filename”) as f:
f.read()

with可以調(diào)用一個(gè)上下文管理器,產(chǎn)生運(yùn)行時(shí)的上下文環(huán)境。上下文管理器主要定義兩個(gè)方法,__enter__,__exit__。__enter__返回上下文里操作的對(duì)象,如f。__exit__是銷(xiāo)毀對(duì)象和異常處理。

contextlib模塊對(duì)外有三個(gè)接口,
contextmanager裝飾器,裝飾的函數(shù)必須是一個(gè)生成器。然后返回一個(gè)函數(shù),在函數(shù)調(diào)用的時(shí)候返回一個(gè)上下文管理器。

nested為了一次調(diào)用多個(gè)上下文管理器的時(shí)候用,將所有上下文管理器里的__enter__放到vars里,一次yield返回,然后unpack。就產(chǎn)生多個(gè)對(duì)象了。__exit__都放到exits列表里,在finally里統(tǒng)一調(diào)用,這些__exit__在調(diào)用上下文管理器產(chǎn)生異常時(shí),如何處理。如果返回false,將會(huì)把異常繼續(xù)拋出,返回true則不會(huì)拋出異常。

closing,這個(gè)用過(guò),沒(méi)想到的是竟然是個(gè)類(lèi),而不是個(gè)函數(shù)。就是把有close方法卻沒(méi)有__exit__方法的對(duì)象變成一個(gè)上下文管理器。代碼很簡(jiǎn)單:

復(fù)制代碼 代碼如下:

class closing(object):
    def __init__(self, thing):
        self.thing = thing
    def __enter__(self):
        return self.thing
    def __exit__(self, *exc_info):
        self.thing.close()

相關(guān)文章

最新評(píng)論

贡觉县| 新竹市| 阳城县| 忻州市| 新龙县| 基隆市| 绵阳市| 庐江县| 景泰县| 泰州市| 梧州市| 建德市| 宜丰县| 沈阳市| 泗阳县| 衢州市| 手游| 大悟县| 义乌市| 顺平县| 涟水县| 潜江市| 信宜市| 方城县| 丰城市| 察雅县| 新建县| 白河县| 阿城市| 正安县| 岢岚县| 鹤山市| 始兴县| 海城市| 三门峡市| 定边县| 盐亭县| 土默特右旗| 铅山县| 磴口县| 商河县|