512 Stimmen

Wofür ist die Python-Anweisung "with" gedacht?

Ich bin auf die Python with Erklärung heute zum ersten Mal abgegeben. Ich benutze Python schon seit einigen Monaten und wusste nicht einmal, dass es existiert! In Anbetracht seines etwas obskuren Status dachte ich, es wäre eine Frage wert:

  1. Was ist die Python with Anweisung für die sie verwendet werden soll?
  2. Was tun verwenden Sie es?
  3. Gibt es irgendwelche Fallstricke, die ich beachten muss, oder gängige Anti-Patterns im Zusammenhang mit der Verwendung? Gibt es Fälle, in denen es besser ist try..finally als with ?
  4. Warum wird sie nicht häufiger eingesetzt?
  5. Welche Standardbibliotheksklassen sind mit ihr kompatibel?

2voto

Timo Huovinen Punkte 49275

Die Antworten hier sind großartig, aber ich möchte nur eine einfache hinzufügen, die mir geholfen hat:

with open("foo.txt") as file:
    data = file.read()
  • open gibt eine file
  • Seit 2.6 hat python die Methoden __enter__ y __exit__ a file .
  • with ist wie eine for-Schleife, die die __enter__ durchläuft die Schleife einmal und ruft dann __exit__
  • with funktioniert mit jeder Instanz, die über __enter__ y __exit__

eine Datei ist gesperrt und kann von anderen Prozessen nicht wiederverwendet werden, bis sie geschlossen wird, __exit__ schließt sie.

Quelle: http://web.archive.org/web/20180310054708/http://effbot.org/zone/python-with-statement.htm

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X