从v3.1和 Python 2.7开始,在Python 3中是可能的。新with语法支持多个上下文管理器:
with A() as a, B() as b, C() as c: doSomething(a,b,c)
不同于
contextlib.nested,这保证了即使或方法引发异常,
a也
b将
__exit__()调用
C()的
__enter__()。
您也可以在较新的定义中使用较早的变量(以下为h / t Ahmad):
with A() as a, B(a) as b, C(a, b) as c: doSomething(a, c)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)