有什么方法可以格式化 with 语句,以便我可以建立可变数量的上下文?就像,有时我想要四个 with 语句,但有时我可能只想要两个。事实上,我面临调用我可以使用但不是的所有对象的虚拟版本的前景,然后将我的代码嵌套在 16 个语句中,其中虚拟对象填充我不使用的语句。因为我使用的是 Python 2.6.6,甚至不支持压缩语法。
顺便说一句, with 语句真的是获得有效清理代码的唯一方法吗?__del__
真的没有其他方法可以获得类似于析构方法的任何东西,但像标准方法一样使用不是错误吗?
有什么方法可以格式化 with 语句,以便我可以建立可变数量的上下文?就像,有时我想要四个 with 语句,但有时我可能只想要两个。事实上,我面临调用我可以使用但不是的所有对象的虚拟版本的前景,然后将我的代码嵌套在 16 个语句中,其中虚拟对象填充我不使用的语句。因为我使用的是 Python 2.6.6,甚至不支持压缩语法。
顺便说一句, with 语句真的是获得有效清理代码的唯一方法吗?__del__
真的没有其他方法可以获得类似于析构方法的任何东西,但像标准方法一样使用不是错误吗?
contextlib.nested
是为此而生的。
文档中的示例:
from contextlib import nested
with nested(*managers):
do_something()