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.
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.
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.
Zu einem späteren Zeitpunkt beschrieben