Was macht Pythons Kontextmanager glücklich?

Hintergrund

Fabric Context Manager

Wenn Sie ein Programm lesen, das Fabric verwendet, gibt es ein Objekt, das von der with-Anweisung aufgerufen wird. Nach ein wenig Recherche scheint es ** Context Manager ** zu heißen. .. Die Person (** Manager ), die den Kontext verwaltet ( Conquitest **), ist Was bedeutet Python und was macht mich glücklich? Ich verstand es nicht gut und dachte, dass ich es nicht einfach kopieren sollte, also beschloss ich, es nachzuschlagen.

Was ist ein Kontextmanager überhaupt?

In der offiziellen Dokumentation Es wird als Objekt zum Definieren und Einrichten des ** Laufzeitkontexts ** bei der Ausführung der with-Anweisung erläutert. Was ist also ** Laufzeitkontext **?

Also habe ich einen Artikel im Stapelüberlauf gefunden. What is a “runtime context”?

Es wird als eine Umgebung beschrieben, die mit dem Aufruf ** \ _ \ _ enter \ _ \ _ () zusammengestellt und mit dem Aufruf \ _ \ _ exit \ _ \ _ () ** abgerissen wird. Diese ** Umgebung ** bezieht sich wahrscheinlich auf die Eigenschaften, über die der Kontextmanager selbst verfügt.

Der Kontextmanager verspricht immer, die speziellen Methoden \ _ \ _enter \ _ \ _ () und \ _ \ _ exit \ _ \ _ () zu definieren. Die Signaturen von \ _ \ _ enter \ _ \ _ () und \ _ \ _ exit \ _ \ _ () sind streng vereinbart. Details werden weggelassen.

Warum erstellen Sie einen ausgehandelten Kontextmanager?

Wenn der Kontextmanager mit der with-Anweisung kurz vor dem with-Block aufgerufen wird, Rufen Sie unbedingt \ _ \ _enter \ _ \ _ () auf Wenn die Verarbeitung des with-Blocks normal endet (oder eine Ausnahme auftritt), Der Kontextmanager \ _ \ _ exit \ _ \ _ () wird immer aufgerufen.

Aus dem Obigen können die Vorteile der Verwendung des Kontextmanagers ersichtlich werden.

Erstellen Sie Ihren eigenen Kontextmanager und rufen Sie ihn auf

Zu einem späteren Zeitpunkt beschrieben

Recommended Posts

Was macht Pythons Kontextmanager glücklich?
Verwendung des Python-Kontextmanagers
Was ist Pythons __init__.py?
Was ist ein Kontextwechsel?
Nützlicher Kontextmanager für Fabric