将 Python 上下文管理器的迭代器嵌套在“with”中

2024-02-21

我有一个返回上下文管理器的迭代器。

我想要一个Pythonicwith语句,模拟几个嵌套的行为with语句,迭代器返回的每个上下文管理器都有一个。

有人可能会说,我想要(已弃用的)的概括contextlib.nested功能。


来自docs http://docs.python.org/library/contextlib.html#contextlib.nested:

需要支持嵌套可变数量上下文管理器的开发人员可以使用warnings模块来抑制DeprecationWarning由[提出contextlib.nested] 或者使用此函数作为应用程序特定实现的模型。

处理多个上下文管理器的困难在于它们的交互非常重要:例如,您可能__enter__第一个然后引发异常__enter__荷兰国际集团第二个。这些边缘情况正是造成这种情况的原因nested被弃用。如果您想支持他们,您必须非常仔细地考虑如何编写代码。您可能想阅读PEP-0343 http://www.python.org/dev/peps/pep-0343/寻求想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Python 上下文管理器的迭代器嵌套在“with”中 的相关文章

随机推荐