Das Verständnis des Schlüsselworts yield in Python erfordert Vertrautheit mit Iterables und Generatoren.
Iterables sind Objekte wie Listen und Strings das über jeweils ein Element iteriert werden kann.
Generatoren sind Iteratoren, die Werte einzeln erzeugen, ohne die gesamte Sequenz im Speicher zu speichern.
Das Schlüsselwort yield funktioniert wie eine Return-Anweisung in einer Generatorfunktion. Anstatt die Funktion zu beenden, wird jedoch die Ausführung angehalten und ein Wert zurückgegeben. Wenn der Iterator fortgesetzt wird, wird die Ausführung an der Stelle fortgesetzt, an der sie angehalten wurde.
Generator:
def _get_child_candidates(self, distance, min_dist, max_dist): # Check if a left child exists and the distance is within range if self._leftchild and distance - max_dist < self._median: yield self._leftchild # Check if a right child exists and the distance is within range if self._rightchild and distance + max_dist >= self._median: yield self._rightchild
Diese Generatorfunktion gibt untergeordnete Knoten zurück innerhalb der angegebenen Entfernung Bereich.
Aufrufer:
result, candidates = [], [self] # Initialize empty result and candidates list while candidates: # Iterate while candidates are available node = candidates.pop() distance = node._get_dist(obj) if distance <= max_dist and distance >= min_dist: # Check distance range result.extend(node._values) candidates.extend(node._get_child_candidates(distance, min_dist, max_dist)) # Add children to candidates list return result
Der Aufrufer initialisiert und iteriert durch eine Liste von Kandidatenknoten, wobei er die Generatorfunktion verwendet, um die Kandidatenliste während einer Schleife zu erweitern. Es überprüft den Entfernungsbereich und fügt gegebenenfalls untergeordnete Knoten hinzu.
Das Schlüsselwort yield ermöglicht die Kontrolle über die Erschöpfung des Generators. Durch Setzen eines Flags zum Stoppen der Iteration können Sie den Zugriff auf Generatorwerte anhalten und wieder aufnehmen.
Das itertools-Modul bietet Funktionen zum Bearbeiten von Iterables. Sie können beispielsweise ganz einfach Permutationen einer Liste erstellen.
Das obige ist der detaillierte Inhalt vonWie erstellt und verwaltet das Python-Schlüsselwort „yield' Generatoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!