Heim >Backend-Entwicklung >Python-Tutorial >Wie erstellt und verwaltet das Python-Schlüsselwort „yield' Generatoren?

Wie erstellt und verwaltet das Python-Schlüsselwort „yield' Generatoren?

DDD
DDDOriginal
2024-12-21 08:51:09516Durchsuche

How Does Python's `yield` Keyword Create and Manage Generators?

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

Einführung

Das Verständnis des Schlüsselworts yield in Python erfordert Vertrautheit mit Iterables und Generatoren.

Iterables

Iterables sind Objekte wie Listen und Strings das über jeweils ein Element iteriert werden kann.

Generatoren

Generatoren sind Iteratoren, die Werte einzeln erzeugen, ohne die gesamte Sequenz im Speicher zu speichern.

Ausbeute

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.

Ihr Code erklärt

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.

Erweiterte Generatornutzung

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.

Itertools

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!

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