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

首頁 > 編程 > Python > 正文

Python contextlib模塊使用示例

2020-02-23 06:25:29
字體:
來源:轉載
供稿:網友

看這個模塊要先看with as的用法,最常用的方法就是打開一個文件:
代碼如下:
with open(“filename”) as f:
f.read()

with可以調用一個上下文管理器,產生運行時的上下文環境。上下文管理器主要定義兩個方法,__enter__,__exit__。__enter__返回上下文里操作的對象,如f。__exit__是銷毀對象和異常處理。

contextlib模塊對外有三個接口,
contextmanager裝飾器,裝飾的函數必須是一個生成器。然后返回一個函數,在函數調用的時候返回一個上下文管理器。

nested為了一次調用多個上下文管理器的時候用,將所有上下文管理器里的__enter__放到vars里,一次yield返回,然后unpack。就產生多個對象了。__exit__都放到exits列表里,在finally里統一調用,這些__exit__在調用上下文管理器產生異常時,如何處理。如果返回false,將會把異常繼續拋出,返回true則不會拋出異常。

closing,這個用過,沒想到的是竟然是個類,而不是個函數。就是把有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()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳信县| 涪陵区| 登封市| 镇雄县| 乳源| 当雄县| 衡阳市| 密云县| 博罗县| 成安县| 西华县| 湟源县| 顺义区| 芜湖县| 灌阳县| 资源县| 高邮市| 友谊县| 通河县| 文水县| 怀宁县| 克山县| 无为县| 外汇| 榆中县| 宿迁市| 遂昌县| 梁平县| 绥棱县| 海城市| 潞西市| 辽中县| 汕尾市| 盐边县| 大余县| 高碑店市| 甘谷县| 乌拉特中旗| 四平市| 娄底市| 神木县|