반응형
질문
파이썬에서 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.1 및 Python 2.7에서 사용할 수 있습니다. 새로운 with
구문은 여러 개의 컨텍스트 매니저를 지원합니다:
with A() as a, B() as b, C() as c:
doSomething(a,b,c)
contextlib.nested
와 달리, 이는 C()
또는 해당 __enter__()
메서드가 예외를 발생시키더라도 a
와 b
의 __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)
반응형
댓글