• 技术文章 >后端开发 >Python教程

    Python contextlib模块使用示例

    2016-06-10 15:17:52原创548
    看这个模块要先看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()
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Python contextlib 模块
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 总结分享Python冷门的技巧• 一文搞懂Python爬虫解析器BeautifulSoup4• 聊聊Python中列表和字典前加星号(**)• python网络爬虫方向的第三方库有哪些• python爬虫入门实战之爬取网页图片
    1/1

    PHP中文网