47.17 with as에서 괄호 사용하기

지금까지 with as를 사용하면서 클래스(컨텍스트 매니저)를 여러 줄로 표현할 때 불편함이 많았습니다. 예를 들어 다음과 같이 한 줄로 표현된 코드를 여러 줄로 표현하려면 \(역슬래시)를 활용해야 했습니다.

with open("a.txt", 'w') as a, open("b.txt", 'w') as b, open("c.txt", 'w') as c:
    pass

즉, 다음과 같이 ,(콤마) 뒤에 \(역슬래시)를 붙여서 줄 바꿈을 해주는 방식입니다.

with open("a.txt", 'w') as a, \
     open("b.txt", 'w') as b, \
     open("c.txt", 'w') as c:
    pass

파이썬 3.10부터 with as의 컨텍스트 매니저에 괄호를 사용하는 것이 공식적으로 허용됩니다.

with as 컨텍스트 매니저의 괄호는 3.10 이상부터 사용 가능

with (클래스1() as 변수1, 클래스2() as 변수2):
    코드

앞에서 설명한 한 줄 짜리 with as 코드는

with open("a.txt", 'w') as a, open("b.txt", 'w') as b, open("c.txt", 'w') as c:
    pass

다음과 같이 컨텍스트 매니저 부분을 괄호로 묶을 수 있습니다.

with (open("a.txt", 'w') as a, open("b.txt", 'w') as b, open("c.txt", 'w') as c):
    pass

이제 이렇게 괄호로 묶어준 코드는 \(역슬래시) 없이 여러 줄로 표현할 수 있습니다.

with (open("a.txt", 'w') as a,
      open("b.txt", 'w') as b,
      open("c.txt", 'w') as c):
    pass