Wie kann ich die Ausgabe einer Python-Funktion mithilfe eines Kontextmanagers erfassen?

Barbara Streisand
Freigeben: 2024-11-01 14:57:29
Original
255 Leute haben es durchsucht

How Can I Capture the Output of a Python Function Using a Context Manager?

Standardausgabe zur Erfassung der Funktionsausgabe umleiten

Diese Frage befasst sich mit der Notwendigkeit, die Standardausgabe einer Python-Funktion zu erfassen, nämlich do_something(my_object), Dadurch wird das Objekt geändert und nebenbei Statistiken gedruckt.

Um dies zu erreichen, wurde eine Kontextmanagerklasse, Capturing, vorgeschlagen. Diese Klasse bietet zwei Schlüsselfunktionen:

  • __enter__(): Leitet stdout an einen internen Puffer um.
  • __exit__(): Stellt stdout an seinem ursprünglichen Ziel wieder her und hängt die erfasste Ausgabe an den an Das Listenattribut der Klasse.

Die Verwendung des Kontextmanagers ist unkompliziert:

<code class="python">with Capturing() as output:
    do_something(my_object)</code>
Nach dem Login kopieren

Zu diesem Zeitpunkt enthält die Ausgabevariable eine Liste der von do_something() gedruckten Zeilen.

Darüber hinaus wird darauf hingewiesen, dass diese Technik mehrfach verwendet werden kann, um die Ausgabe verschiedener Funktionsaufrufe zu erfassen. Die Ergebnisse werden in derselben Ausgabeliste verkettet.

Dieser Ansatz ist besonders nützlich, wenn die aufgerufene Funktion nicht geändert werden kann, um die gewünschten Informationen zurückzugeben.

Das obige ist der detaillierte Inhalt vonWie kann ich die Ausgabe einer Python-Funktion mithilfe eines Kontextmanagers erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage