Das yield-Schlüsselwort in Python

Muhammad Waiz Khan 10 Oktober 2023
Das yield-Schlüsselwort in Python

In diesem Tutorial werden Zweck und Verwendung des Schlüsselworts yield in Python erläutert. Das Schlüsselwort yield ist eine Python-Anweisung, mit der die Generatorfunktionen in Python definiert werden. Die Anweisung yield kann nur innerhalb des Funktionskörpers verwendet werden.

Der Hauptunterschied zwischen einer Generatorfunktion und einer regulären Funktion besteht darin, dass die Generatorfunktion anstelle der Anweisung return einen Ausdruck yield enthält. Die Anweisung yield erzeugt die Werteserie, die als Generatoriterator als Ausgabe bezeichnet wird. Neue Werte aus dem Iterator können mit der Funktion next() oder der Schleife for abgerufen werden.

Jedes Mal, wenn die Funktion next() aufgerufen wird oder bei jeder Iteration der Schleife for, gibt die Anweisung yield einen neuen Wert aus oder erzeugt einen neuen Wert und speichert den Standortausführungsstatus der Funktion, dh die Werte der lokalen Variablen. usw. Bei jedem neuen Funktionsaufruf oder jeder neuen Iteration next() wird die Anweisung yield im Gegensatz zur Anweisung return, die bei jedem Aufruf beginnt, aus dem zuletzt gespeicherten Zustand fortgesetzt.

Beispielcodes für das yield-Schlüsselwort in Python

Da die Funktionsweise der Anweisung yield klar ist, wollen wir uns nun ihre Verwendungen und Beispielcodes ansehen. Angenommen, wir haben eine große Datenmenge und diese kann nicht sofort in ein iterierbares Objekt geladen werden, oder wir möchten eine speichereffizientere Methode zum Lesen der Daten. Mit der Yield-Anweisung können wir eine Generatorfunktion erstellen. Die Funktion liest und liefert bei jeder Iteration oder jedem Funktionsaufruf next() den neuen Datenblock.

Der folgende Beispielcode zeigt, wie Sie die Anweisung yield mit der Schleife for verwenden, um eine einfache Generatorfunktion in Python zu erstellen. Die Generatorfunktion my_generator() im folgenden Beispielcode liefert die neue Nummer von 1 bis 100 und arbeitet bis zu 99-Aufrufen.

def my_generator():
    for x in range(1, 100):
        print("new value is generated!")
        yield x

Wir benötigen zuerst ein Generator-Iterator-Objekt, um Werte entweder mit der Funktion next() oder durch Iteration zu generieren.

gen_iter = my_generator()

Lassen Sie uns nun die neuen Werte mit der Funktion next() vom Generatoriterator abrufen. Wir können auch die Funktion next() als iterator.__next__() verwenden, wie im folgenden Beispielcode gezeigt.

val = next(gen_iter)
print("Value =", val)

val = gen_iter.__next__()
print("Value =", val)

Ausgabe:

new value is generated!
Value = 1
new value is generated!
Value = 2

Die andere Methode, um neue Werte zu erhalten, besteht darin, das Generator-Iterator-Objekt mit der Schleife for zu durchlaufen. Der folgende Beispielcode zeigt, wie das Generator-Iterator-Objekt in Python durchlaufen wird.

for val in gen_iter:
    print("Value =", val)

Das obige Codebeispiel generiert alle 99-Werte aus dem angegebenen Bereich in der Generatorfunktion.

Wir können auch eine Generatorfunktion ohne die for-Schleife erstellen, indem wir die Anweisung yield mehrmals verwenden, wie im folgenden Beispielcode gezeigt.

def my_generator():

    x = 1
    print("new value is generated!")
    yield x
    x = x + 1
    print("new value is generated!")
    yield x
    x = x + 1
    print("new value is generated!")
    yield x

Verwenden wir nun unsere neue Generatorfunktion, um alle Werte mit der for-Schleife zu generieren.

gen_iter = my_generator()
for val in gen_iter:
    print("Value =", val)

Ausgabe:

new value is generated!
Value = 1
new value is generated!
Value = 2
new value is generated!
Value = 3

Verwandter Artikel - Python Keyword