Nota che se dividi le variabili in linee, devi usare le barre rovesciate per avvolgere le nuove linee.
with A() as a, \
B() as b, \
C() as c:
doSomething(a,b,c)
Le parentesi non funzionano, poiché Python crea invece una tupla.
with (A(),
B(),
C()):
doSomething(a,b,c)
Poiché alle tuple manca un __enter__
attributo, viene visualizzato un errore (non descrittivo e non identifica il tipo di classe):
AttributeError: __enter__
Se si tenta di utilizzare as
tra parentesi, Python rileva l'errore al momento dell'analisi:
with (A() as a,
B() as b,
C() as c):
doSomething(a,b,c)
SyntaxError: sintassi non valida
https://bugs.python.org/issue12782 sembra essere collegato a questo problema.