Wann sollte in Python yield anstelle von return verwendet werden?

Die yield-Anweisung unterbricht die Ausführung einer Funktion und sendet einen Wert an den Aufrufer zurück, behält jedoch genügend Status bei, damit die Funktion an der Stelle fortfahren kann, an der sie aufgehört hat. Wenn die Funktion fortgesetzt wird, setzt sie die Ausführung unmittelbar nach dem letzten Yield-Lauf fort. Dadurch kann der Code im Laufe der Zeit eine Reihe von Werten erzeugen, anstatt sie auf einmal zu berechnen und wie eine Liste zurückzusenden.

Sehen wir uns das anhand eines Beispiels an:

Python




# A Simple Python program to demonstrate working> # of yield> # A generator function that yields 1 for the first time,> # 2 second time and 3 third time> def> simpleGeneratorFun():> > yield> 1> > yield> 2> > yield> 3> # Driver code to check above generator function> for> value> in> simpleGeneratorFun():> > print> (value)>

Ausgabe:

1 2 3 

Zurückkehren sendet einen angegebenen Wert an seinen Aufrufer zurück while Ertrag kann eine Folge von Werten erzeugen. Wir sollten yield verwenden, wenn wir eine Sequenz durchlaufen möchten, aber nicht die gesamte Sequenz im Speicher speichern möchten. Yield wird in Python verwendet Generatoren . Eine Generatorfunktion wird wie eine normale Funktion definiert, aber wann immer sie einen Wert generieren muss, tut sie dies mit dem Schlüsselwort yield und nicht mit return. Wenn der Hauptteil eines Defs yield enthält, wird die Funktion automatisch zu einer Generatorfunktion.

Python




# A Python program to generate squares from 1> # to 100 using yield and therefore generator> # An infinite generator function that prints> # next square number. It starts with 1> def> nextSquare():> > i> => 1> > # An Infinite loop to generate squares> > while> True> :> > yield> i> *> i> > i> +> => 1> # Next execution resumes> > # from this point> # Driver code to test above generator> # function> for> num> in> nextSquare():> > if> num>> 100> :> > break> > print> (num)>

Ausgabe:

1 4 9 16 25 36 49 64 81 100