Beachten Sie, dass Sie beim Aufteilen der Variablen in Zeilen Backslashes verwenden müssen, um die Zeilenumbrüche zu umbrechen.
with A() as a, \
B() as b, \
C() as c:
doSomething(a,b,c)
Klammern funktionieren nicht, da Python stattdessen ein Tupel erstellt.
with (A(),
B(),
C()):
doSomething(a,b,c)
Da Tupeln ein __enter__
Attribut fehlt , erhalten Sie einen Fehler (nicht beschreibend und identifiziert den Klassentyp nicht):
AttributeError: __enter__
Wenn Sie versuchen, as
in Klammern zu verwenden, fängt Python den Fehler beim Analysieren ab:
with (A() as a,
B() as b,
C() as c):
doSomething(a,b,c)
SyntaxError: Ungültige Syntax
https://bugs.python.org/issue12782 scheint mit diesem Problem in Zusammenhang zu stehen.