Die with-Anweisung in Python

Manav Narula 21 Juni 2023
  1. Verwenden Sie die with-Anweisung in Python
  2. Abschluss
Die with-Anweisung in Python

Python bietet eine Vielzahl von Funktionen und Optionen, um unseren vorhandenen Code zu verbessern. Eine solche Funktion ist das Schlüsselwort with.

Dieses Tutorial demonstriert die Funktion der with-Anweisung und ihre Anwendungen in Python.

Verwenden Sie die with-Anweisung in Python

Diese Anweisung wird im Wesentlichen verwendet, um Ausnahmen zu behandeln und Ressourcen zu bereinigen, wenn sie verwendet werden. Es stellt sicher, dass der Code ordnungsgemäß ausgeführt und die Ressourcen anschließend bereinigt werden.

Meistens werden Sie die Verwendung der with-Anweisung im Umgang mit Dateien finden. Lassen Sie uns ein Beispiel diskutieren.

f = open("path\file.txt", "w")
f.write("Sample Content")
f.close()

Im obigen Beispiel haben wir eine Datei mit der Funktion open() geöffnet und einige Inhalte mit der Methode write() geschrieben. Dann schloss die Funktion close() das Dateiobjekt und räumte die Ressourcen auf.

Mal sehen, wie der obige Code mit dem Schlüsselwort with aussieht.

with open("path\file.txt") as f:
    f.write("Sample Content")

Im Code sehen wir, dass wir mit der with-Anweisung die Verwendung der close()-Funktion eliminieren konnten.

Ein weiterer Fall, in dem die with-Anweisung hilfreich sein kann, ist die Kapselung der try- und finally-Blöcke.

Zum Beispiel,

f = open("path\file.txt", "w")
try:
    f.write("Sample Content")
finally:
    f.close()

Der try-Block nimmt einen Code wie das Öffnen einer Datei, und der Code im finally-Block wird ausgeführt, unabhängig davon, ob der Code im try-Block eine Ausnahme auslöst. Im obigen Beispiel führt der Code im Block finally die Funktion close() aus, selbst wenn die Funktion write() eine Ausnahme auslöst.

Wir haben gesehen, wie wir dies mit der with-Anweisung im vorherigen Beispiel erreichen können.

Wir können die with-Anweisung auch mit benutzerdefinierten Objekten verwenden, und solche Objekte werden als Kontextmanager bezeichnet. Sie haben eine __enter__- und __exit__-Methode definiert.

Die Methode __enter__ wird ausgeführt, während ein Objekt dieser Klasse mit der Anweisung with erstellt wird. Die Methode __exit__ wird ausgeführt, wenn der Code im Block with beendet ist.

class writer_class(object):
    def __init__(self, filename):
        self.filename = filename

    def __enter__(self):
        self.f = open(self.filename, "w")
        return self.f

    def __exit__(self, exception, value):
        self.f.close()


with writer_class("file.txt") as f:
    f.write("DelftStack")

Die Objekte der obigen Klasse in Python führen beim Erstellen die Methode __enter__ aus, mit der die Datei geöffnet wird. Die Funktion close() wird in die Methode __exit__ eingefügt, um das Dateiobjekt zu schließen, wenn der Code ausgeführt wurde.

Wie Klassen können wir die Bibliothek contextlib verwenden, um Kontext-Manager-Methoden zu erstellen. Diese Methoden können mit dem Decorator @contextmanager erstellt werden, der vor die definierte Funktion gestellt wird.

Zum Beispiel,

from contextlib import contextmanager


@contextmanager
def new_open(file):
    try:
        f = open(file, "w")
        yield f
    finally:
        f.close()


with new_open("sample.txt") as f:
    f.write("DelftStack")

Im Beispielcode sehen wir die Verwendung des Dekorators @contextmanager, der es uns ermöglicht, solche Methoden zu erstellen. In der definierten Funktion fügen wir den vollständigen Code zum Erstellen des Dateiobjekts und zum Schließen des erstellten Objekts mithilfe der Blöcke try und finally ein.

Abschluss

Abschließend haben wir die with-Anweisung in Python und ihre Verwendung besprochen. Wir haben zuerst die Grundlagen dieser Anweisung besprochen und wie sie die Lesbarkeit und Effizienz des Codes verbessert, indem sie die Ressourcen bereinigt.

Wir haben uns auf die häufigste Anwendung mit der Dateiverwaltung konzentriert, um ihre Verwendung zu demonstrieren. Wir haben auch den Kontextmanager und seine Methoden besprochen und wie wir die with-Anweisung mit ihnen verwenden können.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Verwandter Artikel - Python Keyword