Auf mehreren Kontextmanagern einen "mit" -Block erstellen? [Duplikat
Diese Frage hat hier bereits eine Antwort:
Mehrere Variablen in einer 'with'-Anweisung? 5 AntwortenAngenommen, 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