Heim >Backend-Entwicklung >Python-Tutorial >Wie erstellt das Python-Schlüsselwort „yield' effiziente Iteratoren in Generatorfunktionen?

Wie erstellt das Python-Schlüsselwort „yield' effiziente Iteratoren in Generatorfunktionen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-25 17:44:10247Durchsuche

How Does Python's `yield` Keyword Create Efficient Iterators in Generator Functions?

Was bewirkt das Schlüsselwort „yield“ in Python?

Das Schlüsselwort „yield“ von Python wird in Generatorfunktionen verwendet, bei denen es sich um spezielle Funktionen handelt die als Iteratoren fungieren.

Generatorfunktionen und Iteratoren

  • Iteratoren: Objekte, die jeweils eine Folge von Werten erzeugen.
  • Generatorfunktionen: Funktionen, die einen Iterator anstelle eines bestimmten Werts zurückgeben. Sie verwenden das Schlüsselwort „yield“, um Werte bei Bedarf zu generieren.

Funktionalität von „yield“

Wenn eine Generatorfunktion aufgerufen wird:

  • Die Generatorfunktion führt ihren Code nicht sofort aus.
  • Stattdessen gibt sie einen Generator zurück Objekt.
  • Dieses Generatorobjekt ist der Iterator, der Werte erzeugt.

Wenn ein Iterator in einer „for“-Schleife verwendet wird:

  • Das erste Sobald die Schleife auf eine „yield“-Anweisung trifft, nimmt die Generatorfunktion die Ausführung wieder auf und gibt ihren ersten Wert zurück.
  • Nachfolgende Iterationen von Die Schleife bewirkt, dass die Generatorfunktion fortfährt und die nächsten Werte liefert, bis keine Werte mehr übrig sind.
  • Die Generatorfunktion wird beendet, wenn sie das Ende ihrer Logik erreicht oder auf eine „Return“-Anweisung stößt.

Beispielcode-Erklärung

Das angegebene Codefragment definiert eine aufgerufene Generatorfunktion _get_child_candidates innerhalb der Knotenklasse.

  • Die Funktion verwendet die Parameter distance, min_dist und max_dist.
  • Sie liefert die linken und rechten untergeordneten Knoten, wenn ihre Abstände die Kriterien erfüllen.
  • Wenn keine weiteren Kinder die Kriterien erfüllen, funktioniert der Generator wird beendet.

Im Aufrufercode:

  • Ergebnis wird als leere Liste initialisiert.
  • Kandidaten wird als Liste initialisiert, die das aktuelle Knotenobjekt enthält .
  • Die Schleife iteriert über Kandidaten.
  • Für jeden Knoten wird die Entfernung überprüft und fügt seine Werte zum Ergebnis hinzu, wenn es die Kriterien erfüllt.
  • Anschließend werden Kandidaten mit den vom _get_child_candidates-Generator erhaltenen untergeordneten Knoten erweitert.
  • Die Schleife wird fortgesetzt, bis alle untergeordneten Knoten verarbeitet wurden.

Vorteile von Generatoren

  • Speichereffizienz: Generatoren speichern im Gegensatz zu Listen nicht alle Werte im Speicher.
  • Verzögerte Auswertung: Werte werden nur berechnet, wenn der Generator wiederholt wird, was den Rechenaufwand reduziert Overhead.
  • Erweiterte Kontrolle über die Iteration: Sie können die Generierung von Werten mithilfe der Logik im Generator steuern Funktion.

Das obige ist der detaillierte Inhalt vonWie erstellt das Python-Schlüsselwort „yield' effiziente Iteratoren in Generatorfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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