'with' ステートメントに複数の変数がありますか? 質問する

'with' ステートメントに複数の変数がありますか? 質問する

withPython のステートメントを使用して複数の変数を宣言することは可能ですか?

何かのようなもの:

from __future__ import with_statement

with open("out.txt","wt"), open("in.txt") as file_out, file_in:
    for line in file_in:
        file_out.write(line)

... または、2 つのリソースを同時にクリーンアップすることが問題なのでしょうか?

ベストアンサー1

それは可能ですPython 3 v3.1 以降そしてPython 2.7。 新しいwith構文複数のコンテキスト マネージャーをサポートします。

with A() as a, B() as b, C() as c:
    doSomething(a,b,c)

とは異なりcontextlib.nested、これは、またはそのメソッドが例外を発生させる場合でも、 および の が呼び出さaれるbことを保証します。__exit__()C()__enter__()

前の変数を後の定義で使用することもできます(h/tアフマド下に):

with A() as a, B(a) as b, C(a, b) as c:
    doSomething(a, c)

Python 3.10以降では、括弧を使うことができます:

with (
    A() as a, 
    B(a) as b, 
    C(a, b) as c,
):
    doSomething(a, c)

おすすめ記事