Зауважте, що якщо ви розділите змінні на рядки, для обертання нових рядків потрібно використовувати зворотні риски.
with A() as a, \
B() as b, \
C() as c:
doSomething(a,b,c)
Дужки не працюють, оскільки замість цього Python створює кортеж.
with (A(),
B(),
C()):
doSomething(a,b,c)
Оскільки кортежам не вистачає __enter__
атрибуту, ви отримуєте помилку (не описовий та не визначає тип класу):
AttributeError: __enter__
Якщо ви намагаєтесь використовувати as
в дужках, Python виявляє помилку під час розбору:
with (A() as a,
B() as b,
C() as c):
doSomething(a,b,c)
SyntaxError: недійсний синтаксис
https://bugs.python.org/issue12782, схоже, пов'язане з цим питанням.