Inhaltsverzeichnis
Zusammenfassung
Heim Backend-Entwicklung Python-Tutorial Entmystifizierung des with-Schlüsselworts in Python

Entmystifizierung des with-Schlüsselworts in Python

Apr 14, 2023 am 11:31 AM
python 代码 with

Entmystifizierung des with-Schlüsselworts in Python

Viele von uns haben diesen Codeausschnitt immer wieder im Python-Code gesehen:

with open('Hi.text', 'w') as f:
f.write("Hello, there")
Nach dem Login kopieren

Allerdings wissen einige von uns nicht, wofür „with“ verwendet wird und warum wir es hier verwenden müssen. In dieser Lektüre erfahren Sie mehr über fast jedes Problem, mit dem Sie es lösen können. Fangen wir an!

Lass uns zunächst darüber nachdenken, was wir tun müssen, ohne das Schlüsselwort with zu verwenden. In diesem Fall müssen wir zuerst die Datei öffnen und versuchen zu schreiben. Unabhängig von Erfolg oder Misserfolg schließen wir es besser am Ende, damit unser Code so aussieht:

f = open('Hi.text', 'w')
try:
f.write('Hello, there')
finally:
f.close()
Nach dem Login kopieren

Also, wozu dient das Schlüsselwort with? Es hilft nur, unseren try..finally-Code auf eine einzige with...-Anweisung zu verkürzen! So wird die with-Anweisung verwendet.

Also, was genau ist das? Tatsächlich ist die with-Anweisung selbst in Python nichts Besonderes, sie ist lediglich eine Funktion des Kontextmanagers in Python. Ein Kontextmanager, zitiert aus der offiziellen Python-Dokumentation, ist eine Möglichkeit, Ihnen zu ermöglichen, Ressourcen genau dann zuzuweisen und freizugeben, wenn sie benötigt werden, oder einfach ausgedrückt: Kürzen Sie Ihr Code-Snippet, wenn Sie etwas an einer Ressource tun, was bedeutet, dass Sie dann die Verwendung definieren können der with-Anweisung selbst!

Wie machen wir das? Nun, es ist ganz einfach, Sie müssen nur zwei magische Funktionen implementieren: eine namens __enter__ und die andere namens __exit__. Die erste Möglichkeit besteht darin, eine Klasse zu schreiben, die diese beiden Funktionen implementiert, wie unten gezeigt:

class My_file:
def __init__(self, fname):
self.fname = fname
def __enter__(self):
self.file = open(self.fname, 'w')
return self.file
def __exit__(self, exc_type, exc_val, exc_trace_back):
if self.file:
self.file.close()
Nach dem Login kopieren

Hier haben wir eine normale Python-Klasse erstellt, die die beiden magischen Funktionen implementiert. Beachten Sie die Signaturen dieser beiden Funktionen: __enter__ akzeptiert nur self , während __exit__ mehr Argumente akzeptiert, die drei im Beispiel sind die Standardform. Auf diese Weise können wir Folgendes direkt verwenden:

with My_file('hello.txt') as f:
f.write('hello, world!')
Nach dem Login kopieren

Die with-Anweisung hier ruft zuerst __init__ auf, um ein neues Objekt zu erstellen, und ruft dann die __enter__-Methode auf, bevor der Codeblock abgeschlossen ist. Das ungefähre Äquivalent des obigen Codes lautet also wie folgt:

myfile = My_file('hello.txt')
f = myfile.__enter__()
f.write('hello, world!')
myfile.__exit(...)
Nach dem Login kopieren

Die zweite Möglichkeit, einen Kontextmanager zu implementieren, ist über einen Dekorator wie folgt:

  1. Sie importieren den Kontextmanager aus contextlib
  2. Sie schreiben eine Funktion, um das zu erreichen, was Sie möchten wollen mit Aussage.
  3. Fügen Sie über der Funktion einen Dekorator @contextmanager hinzu.
  4. Verwenden Sie es mit Ihrer_Funktion!

Lassen Sie uns gemäß der obigen Einführung einen Dekorator-Kontextmanager schreiben!

from contextlib import contextmanager
@contextmanager
def my_file_open(fname):
try:
f = open(fname, 'w')
yield f
finally:
print('Closing file')
f.close()
with file_open('hi.txt') as f:
f.write('hello world')
Nach dem Login kopieren

Das Obige deckt so ziemlich alle Grundlagen von Statements und Kontextmanagern ab, aber wenn Sie mehr erfahren möchten, machen Sie weiter...!

contextlib verfügt über einige praktische Tools, die Sie verwenden können. Der erste schließt sich. Beim Schließen wird Ihr Codeblock grundsätzlich mit einer anderen Funktion umschlossen, die Sie vor dem Beenden implementieren.

@contextmanager
def closing(f):
try:
f.write("Finish writing")
finally:
f.close()
with closing(open("hi.text")):
f.write("hello world")
Nach dem Login kopieren

Zum Beispiel können wir im obigen Code direkt close(your_way_of_getting_resource) aufrufen und kurz bevor der Codeblock, den Sie unten geschrieben haben, fertig ist (f.write("hello world")), wird er try ausführen. .endlich verwenden wir den oben definierten Block.

Die andere Möglichkeit besteht darin, das Unterdrückungstool zu verwenden. Wir wissen, dass es in vielen Fällen wahrscheinlich ist, dass beim Öffnen der Datei Fehler wie FileNotFoundException auftreten, wenn wir versuchen, einige Ressourcen abzurufen. In manchen Fällen möchten wir Fehler abfangen oder unterdrücken, damit das Programm normal weiterlaufen kann. Unterdrücken ist eine Möglichkeit, Warnungen zu unterdrücken. Alles, was Sie tun müssen, ist herauszufinden, welche Ausnahme Sie unterdrücken möchten, und mit suppress(your_choice_of_Exception) zu schreiben, und Python kümmert sich von dort aus darum.

In anderen Fällen möchten Sie möglicherweise nur bestimmte Aktionen ausführen, wenn Sie einen With-Block eingeben. In diesem Fall ist nullcontext für Sie praktisch. nullcontext gibt nur das zurück, was Sie in der Funktion __enter__ definiert haben, und führt keine weiteren Aktionen aus. Wenn Sie mit asynchronen Vorgängen in Python arbeiten, um auf Ressourcen zuzugreifen, ist aclosure ein Dienstprogramm zur Bewältigung dieser Situation.

Zusammenfassung

In diesem Artikel werden einige grundlegende Konzepte und die Verwendung der with-Anweisung sowie das zugrunde liegende Funktionsprinzip vorgestellt. Es gibt noch viel mehr Interessantes, schauen Sie sich die contextlib-Dokumentation von Python an. Abschließend wünsche ich Ihnen wie immer viel Spaß beim Lernen und viel Spaß beim Programmieren!

Das obige ist der detaillierte Inhalt vonEntmystifizierung des with-Schlüsselworts in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Muss MySQL bezahlen? Muss MySQL bezahlen? Apr 08, 2025 pm 05:36 PM

MySQL hat eine kostenlose Community -Version und eine kostenpflichtige Enterprise -Version. Die Community -Version kann kostenlos verwendet und geändert werden, die Unterstützung ist jedoch begrenzt und für Anwendungen mit geringen Stabilitätsanforderungen und starken technischen Funktionen geeignet. Die Enterprise Edition bietet umfassende kommerzielle Unterstützung für Anwendungen, die eine stabile, zuverlässige Hochleistungsdatenbank erfordern und bereit sind, Unterstützung zu bezahlen. Zu den Faktoren, die bei der Auswahl einer Version berücksichtigt werden, gehören Kritikalität, Budgetierung und technische Fähigkeiten von Anwendungen. Es gibt keine perfekte Option, nur die am besten geeignete Option, und Sie müssen die spezifische Situation sorgfältig auswählen.

So verwenden Sie MySQL nach der Installation So verwenden Sie MySQL nach der Installation Apr 08, 2025 am 11:48 AM

Der Artikel führt den Betrieb der MySQL -Datenbank vor. Zunächst müssen Sie einen MySQL -Client wie MySQLworkBench oder Befehlszeilen -Client installieren. 1. Verwenden Sie den Befehl mySQL-uroot-P, um eine Verbindung zum Server herzustellen und sich mit dem Stammkonto-Passwort anzumelden. 2. Verwenden Sie die Erstellung von Createdatabase, um eine Datenbank zu erstellen, und verwenden Sie eine Datenbank aus. 3.. Verwenden Sie CreateTable, um eine Tabelle zu erstellen, Felder und Datentypen zu definieren. 4. Verwenden Sie InsertInto, um Daten einzulegen, Daten abzufragen, Daten nach Aktualisierung zu aktualisieren und Daten nach Löschen zu löschen. Nur indem Sie diese Schritte beherrschen, lernen, mit gemeinsamen Problemen umzugehen und die Datenbankleistung zu optimieren, können Sie MySQL effizient verwenden.

MySQL kann nach dem Herunterladen nicht installiert werden MySQL kann nach dem Herunterladen nicht installiert werden Apr 08, 2025 am 11:24 AM

Die Hauptgründe für den Fehler bei MySQL -Installationsfehlern sind: 1. Erlaubnisprobleme, Sie müssen als Administrator ausgeführt oder den Sudo -Befehl verwenden. 2. Die Abhängigkeiten fehlen, und Sie müssen relevante Entwicklungspakete installieren. 3. Portkonflikte müssen Sie das Programm schließen, das Port 3306 einnimmt, oder die Konfigurationsdatei ändern. 4. Das Installationspaket ist beschädigt. Sie müssen die Integrität herunterladen und überprüfen. 5. Die Umgebungsvariable ist falsch konfiguriert und die Umgebungsvariablen müssen korrekt entsprechend dem Betriebssystem konfiguriert werden. Lösen Sie diese Probleme und überprüfen Sie jeden Schritt sorgfältig, um MySQL erfolgreich zu installieren.

Die MySQL -Download -Datei ist beschädigt und kann nicht installiert werden. Reparaturlösung Die MySQL -Download -Datei ist beschädigt und kann nicht installiert werden. Reparaturlösung Apr 08, 2025 am 11:21 AM

Die MySQL -Download -Datei ist beschädigt. Was soll ich tun? Wenn Sie MySQL herunterladen, können Sie die Korruption der Datei begegnen. Es ist heutzutage wirklich nicht einfach! In diesem Artikel wird darüber gesprochen, wie dieses Problem gelöst werden kann, damit jeder Umwege vermeiden kann. Nach dem Lesen können Sie nicht nur das beschädigte MySQL -Installationspaket reparieren, sondern auch ein tieferes Verständnis des Download- und Installationsprozesses haben, um zu vermeiden, dass Sie in Zukunft stecken bleiben. Lassen Sie uns zunächst darüber sprechen, warum das Herunterladen von Dateien beschädigt wird. Dafür gibt es viele Gründe. Netzwerkprobleme sind der Schuldige. Unterbrechung des Download -Prozesses und der Instabilität im Netzwerk kann zu einer Korruption von Dateien führen. Es gibt auch das Problem mit der Download -Quelle selbst. Die Serverdatei selbst ist gebrochen und natürlich auch unterbrochen, wenn Sie sie herunterladen. Darüber hinaus kann das übermäßige "leidenschaftliche" Scannen einer Antiviren -Software auch zu einer Beschädigung von Dateien führen. Diagnoseproblem: Stellen Sie fest, ob die Datei wirklich beschädigt ist

Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Apr 08, 2025 pm 06:03 PM

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.

So optimieren Sie die Datenbankleistung nach der MySQL -Installation So optimieren Sie die Datenbankleistung nach der MySQL -Installation Apr 08, 2025 am 11:36 AM

Die MySQL -Leistungsoptimierung muss von drei Aspekten beginnen: Installationskonfiguration, Indexierung und Abfrageoptimierung, Überwachung und Abstimmung. 1. Nach der Installation müssen Sie die my.cnf -Datei entsprechend der Serverkonfiguration anpassen, z. 2. Erstellen Sie einen geeigneten Index, um übermäßige Indizes zu vermeiden und Abfrageanweisungen zu optimieren, z. B. den Befehl Erklärung zur Analyse des Ausführungsplans; 3. Verwenden Sie das eigene Überwachungstool von MySQL (ShowProcessList, Showstatus), um die Datenbankgesundheit zu überwachen und die Datenbank regelmäßig zu sichern und zu organisieren. Nur durch kontinuierliche Optimierung dieser Schritte kann die Leistung der MySQL -Datenbank verbessert werden.

Braucht MySQL das Internet? Braucht MySQL das Internet? Apr 08, 2025 pm 02:18 PM

MySQL kann ohne Netzwerkverbindungen für die grundlegende Datenspeicherung und -verwaltung ausgeführt werden. Für die Interaktion mit anderen Systemen, Remotezugriff oder Verwendung erweiterte Funktionen wie Replikation und Clustering ist jedoch eine Netzwerkverbindung erforderlich. Darüber hinaus sind Sicherheitsmaßnahmen (wie Firewalls), Leistungsoptimierung (Wählen Sie die richtige Netzwerkverbindung) und die Datensicherung für die Verbindung zum Internet von entscheidender Bedeutung.

Navicat -Methode zum Anzeigen von MongoDB -Datenbankkennwort Navicat -Methode zum Anzeigen von MongoDB -Datenbankkennwort Apr 08, 2025 pm 09:39 PM

Es ist unmöglich, das MongoDB -Passwort direkt über Navicat anzuzeigen, da es als Hash -Werte gespeichert ist. So rufen Sie verlorene Passwörter ab: 1. Passwörter zurücksetzen; 2. Überprüfen Sie die Konfigurationsdateien (können Hash -Werte enthalten). 3. Überprüfen Sie Codes (May Hardcode -Passwörter).

See all articles