Auf mehreren Kontextmanagern einen "mit" -Block erstellen? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Mehrere Variablen in einer 'with'-Anweisung? 5 Antworten

Angenommen, Sie haben drei Objekte, die Sie über den Kontext-Manager erwerben, z. B. eine Sperre, eine Datenbankverbindung und einen IP-Socket. Sie können sie erwerben durch:

with lock:
   with db_con:
       with socket:
            #do stuff

Aber gibt es eine Möglichkeit, es in einem Block zu tun? etwas wi

with lock,db_con,socket:
   #do stuff

Ist es außerdem möglich, bei einem Array unbekannter Länge von Objekten mit Kontextmanagern Folgendes zu tun:

a=[lock1, lock2, lock3, db_con1, socket, db_con2]
with a as res:
    #now all objects in array are acquired

Wenn die Antwort "nein" ist, liegt es daran, dass die Notwendigkeit für ein solches Feature ein schlechtes Design impliziert, oder sollte ich es vielleicht auf den Punkt bringen? : -P

Antworten auf die Frage(10)

Ihre Antwort auf die Frage