gpt4 book ai didi

python - 在 "with"中嵌套 Python 上下文管理器的迭代器

转载 作者:太空狗 更新时间:2023-10-30 03:06:13 26 4
gpt4 key购买 nike

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

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

可以说,我想要(已弃用的)contextlib.nested 函数的泛化。

最佳答案

来自docs :

Developers that need to support nesting of a variable number of context managers can either use the warnings module to suppress the DeprecationWarning raised by [contextlib.nested] or else use this function as a model for an application specific implementation.

处理多个上下文管理器的困难之处在于它们之间的交互非常重要:例如,您可能会在第一个__enter__ 中引发异常,然后在第二个__enter__ 中引发异常.这些极端情况正是导致 nested 被弃用的原因。如果你想支持它们,你将不得不非常仔细地考虑你如何编写你的代码。您不妨阅读PEP-0343的想法。

关于python - 在 "with"中嵌套 Python 上下文管理器的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9148965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com