Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 可变数量的With语句_Python_With Statement - Fatal编程技术网

Python 可变数量的With语句

Python 可变数量的With语句,python,with-statement,Python,With Statement,有没有办法格式化with语句,以便我可以建立数量可变的上下文?比如,有时候我想要四条语句,但有时候我可能只想要两条。事实上,我面临着调用所有我可以使用但没有使用的对象的虚拟版本的前景,然后将我的代码嵌套在16个语句中,其中虚拟对象填充我没有使用的语句。因为我使用的是Python 2.6.6,甚至不支持压缩语法 顺便问一下,with语句真的是获得有效清理代码的唯一方法吗?真的没有其他方法可以得到类似析构函数方法的东西,但是像标准的\uu del\uuu方法那样使用不是一个错误吗?就是为了这个 文档

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

顺便问一下,with语句真的是获得有效清理代码的唯一方法吗?真的没有其他方法可以得到类似析构函数方法的东西,但是像标准的
\uu del\uuu
方法那样使用不是一个错误吗?

就是为了这个

文档中的示例:

from contextlib import nested

with nested(*managers):
    do_something()
就是为了这个

文档中的示例:

from contextlib import nested

with nested(*managers):
    do_something()

同样值得指出的是,A()作为A,B()作为B:suite的
格式是的,但这不适用于可变数量的上下文,也不适用于Python 2.6。一个真正的问题是,既然with语句现在接受多重形式,
contextlib.nested
将在Python 3.3中被标记为已弃用,即使这是执行O.P.要求的唯一可能的(干净的)方法。这里的问题是如何创建管理器,以确保在创建最后一个异常时引发的异常不会让所有其他异常都依赖于它们的
\u del_uuuuuu()
用于清理。同样值得指出的是,A()作为A,B()作为B:suite的
格式是的,但这不适用于可变数量的上下文,也不适用于Python 2.6。一个真正的问题是,由于with语句现在接受多重形式,
contextlib.nested
将在Python 3.3中被标记为已弃用,即使这是执行O.P.要求的唯一可能的(干净的)方法。这里的问题是如何创建管理器,以确保在创建最后一个异常时引发的异常不会让所有其他异常都依赖于它们的
\u del_uuuuuu()
用于清理。至于获取清理代码的其他方法,在更简单的情况下可以始终使用“try”语句的“finally”子句。至于获取清理代码的其他方法,在更简单的情况下可以始终使用“try”语句的“finally”子句。