当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python contextlib.ExitStack用法及代码示例


用法:

class contextlib.ExitStack

一种上下文管理器,旨在使以编程方式组合其他上下文管理器和清理函数变得容易,尤其是那些可选的或由输入数据驱动的那些。

例如,一组文件可以很容易地在一个 with 语句中处理,如下所示:

with ExitStack() as stack:
    files = [stack.enter_context(open(fname)) for fname in filenames]
    # All opened files will automatically be closed at the end of
    # the with statement, even if attempts to open files later
    # in the list raise an exception

每个实例维护一个已注册的回调堆栈,当实例关闭时(在with 语句的末尾显式或隐式地)以相反的顺序调用这些回调。请注意,当上下文堆栈实例被垃圾收集时,回调是隐式调用的not

使用此堆栈模型,以便可以正确处理在其__init__ 方法中获取其资源(例如文件对象)的上下文管理器。

由于注册的回调是以注册的相反顺序调用的,因此最终表现得好像多个嵌套的 with 语句已与注册的回调集一起使用。这甚至扩展到异常处理——如果内部回调抑制或替换异常,则外部回调将根据更新后的状态传递参数。

这是一个相对较低级别的 API,它负责正确展开退出回调堆栈的细节。它为以应用程序特定方式操作退出堆栈的更高级别的上下文管理器提供了合适的基础。

3.3 版中的新函数。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 contextlib.ExitStack。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。