본문 바로가기
Python/Python FAQ

Python 'with' 문에서 여러 변수 사용하기?, Multiple variables in a 'with' statement?

by 베타코드 2023. 9. 13.
반응형

질문


파이썬에서 with 문을 사용하여 하나 이상의 변수를 선언하는 것이 가능한가요?

다음과 같은 방식으로:

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)

... 또는 두 개의 리소스를 동시에 정리하는 것이 문제인가요?


답변


파이썬 3.1부터 가능하며 Python 3.1Python 2.7에서 사용할 수 있습니다. 새로운 with 구문은 여러 개의 컨텍스트 매니저를 지원합니다:

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

contextlib.nested와 달리, 이는 C() 또는 해당 __enter__() 메서드가 예외를 발생시키더라도 ab__exit__()가 호출됨을 보장합니다.

나중에 정의된 변수를 이전 정의에서 사용할 수도 있습니다 (참고: Ahmad):

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)
반응형

댓글