国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python contextlib模塊使用示例

2019-11-25 17:59:32
字體:
供稿:網(wǎng)友

看這個(gè)模塊要先看with as的用法,最常用的方法就是打開一個(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__是銷毀對(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è)用過,沒想到的是竟然是個(gè)類,而不是個(gè)函數(shù)。就是把有close方法卻沒有__exit__方法的對(duì)象變成一個(gè)上下文管理器。代碼很簡單:

復(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()

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 仁化县| 云梦县| 乌鲁木齐县| 平果县| 黔西| 泽普县| 武威市| 宁德市| 新巴尔虎左旗| 抚宁县| 安庆市| 布拖县| 平邑县| 沾化县| 大庆市| 巴林右旗| 会东县| 商都县| 荥经县| 枝江市| 怀柔区| 樟树市| 察雅县| 股票| 金山区| 洪湖市| 永安市| 蒙山县| 类乌齐县| 张掖市| 郴州市| 黑河市| 忻州市| 天镇县| 锡林郭勒盟| 鄂伦春自治旗| 抚远县| 赣榆县| 邯郸市| 镇坪县| 栾城县|