2

有什么方法可以格式化 with 语句,以便我可以建立可变数量的上下文?就像,有时我想要四个 with 语句,但有时我可能只想要两个。事实上,我面临调用我可以使用但不是的所有对象的虚拟版本的前景,然后将我的代码嵌套在 16 个语句中,其中虚拟对象填充我不使用的语句。因为我使用的是 Python 2.6.6,甚至不支持压缩语法。

顺便说一句, with 语句真的是获得有效清理代码的唯一方法吗?__del__真的没有其他方法可以获得类似于析构方法的任何东西,但像标准方法一样使用不是错误吗?

4

1 回答 1

4

contextlib.nested是为此而生的。

文档中的示例:

from contextlib import nested

with nested(*managers):
    do_something()
于 2012-09-04T20:37:53.640 回答