Обратите внимание, что если вы разбиваете переменные на строки, вы должны использовать обратную косую черту для переноса строк.
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, похоже, связано с этой проблемой.