国产探花免费观看_亚洲丰满少妇自慰呻吟_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()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳州市| 揭西县| 特克斯县| 扎赉特旗| 洪江市| 乐亭县| 张家界市| 溧阳市| 边坝县| 九江县| 白山市| 广饶县| 丰都县| 大英县| 嘉鱼县| 海盐县| 喀喇| 通渭县| 荣成市| 右玉县| 汉寿县| 康乐县| 城市| 永新县| 甘泉县| 江华| 北票市| 高平市| 东城区| 蕉岭县| 曲沃县| 靖宇县| 和顺县| 中江县| 昆明市| 龙岩市| 九龙县| 兴海县| 北京市| 元朗区| 宜兴市|