In Python erfolgt die Definition von generator mit Hilfe der yield-Anweisung. Bevor wir also näher darauf eingehen, wofür Ertrag tatsächlich verwendet wird, ist es wichtig, einen Überblick über Generatoren zu erhalten. Wenn Sie neu bei Python sind, besteht eine gute Chance, dass Sie schon einmal einen Python-Generator verwendet haben. Generatoren spielen in Python eine wichtige Rolle. In Python können Iteratoren mithilfe von Generatoren generiert werden, der Prozess nimmt jedoch eine etwas andere Form an.
Python-Generatoren sind Funktionen, die dynamisch anhalten und fortsetzen und eine Folge von Ergebnissen erstellen können. Sie können auch zur Generierung von Zufallszahlen verwendet werden. In Python 2.2 wurden Generatoren erstmals als optionale Funktion eingeführt. In Python 2.3 werden sie erzwungen. Die Generatorfunktionalität wurde in Python 2.5 erheblich verbessert, obwohl sie bereits über ausreichende Funktionalität verfügt.
Um die Abwärtskompatibilität aufrechtzuerhalten, führte die Hinzufügung von Generatoren in Python 2.2 zur Einführung eines neuen Schlüsselworts namens „yield“. Um Generatoren verwenden zu können, müssen wir sie aus dem Modul _future_ importieren. Als Generatoren in der Python-Version 2.3 zum Standard wurden, wurde dies geändert, um der Tatsache Rechnung zu tragen, dass die Änderung nicht mehr erforderlich war.
Verwenden Sie die yield-Anweisung, um die Ausführung einer Funktion vorübergehend zu stoppen, die dann einen Wert an den Aufrufer zurückgibt und gleichzeitig den Status der Funktion für eine spätere Wiederherstellung speichert. Dies bedeutet, dass der gesamte Generator nach Erhalt des Rückgabewerts noch neu gestartet werden kann. Die Ausführung einer Funktion endet mit einer Return-Anweisung, die auch einen Wert an die Person zurückgibt, die die Funktion aufgerufen hat. Wenn es fehlt, gibt Ihre Funktion nichts zurück.
In Python-Generatoren ersetzt die Anweisung yield die Anweisung return der Funktion, um einen Wert an die Person zurückzugeben, die den Generator aufgerufen hat, ohne lokale Variablen zu löschen. Um die Funktion der Ausführung von yield-Anweisungen in der Python-Programmierung besser zu verstehen, müssen Sie zunächst mit Generatoren vertraut sein.
Der Unterschied zwischen einer Generatorfunktion und einer normalen Funktion besteht darin, dass die Definition der Generatorfunktion eine „Ertrags“-Anweisung enthält. Es beginnt mit dem Schlüsselwort „yield“, das das Generatorobjekt identifiziert, das an denjenigen zurückgegeben werden soll, der diese Funktion aufruft.
In Python gibt ein bestimmter Funktionstyp namens „Generator“ keinen Datenwert an die Person zurück, die die Funktion aufgerufen hat, sondern stattdessen ein anderes Generatorobjekt. Mit Hilfe des Schlüsselworts yield können Sie die Ausführung einer Funktion vorübergehend stoppen, den Status speichern und die Funktion später wieder aufnehmen.
Schauen Sie sich das Beispiel unten an -
# Use of yield def printresult(String): for i in String: if i == "p": yield i # Initializing string String = "Happy Birthday" ans = 0 print ("The number of 'p' in word is: ", end = "" ) String = String.strip() for j in printresult(String): ans = ans + 1 print (ans)
The number of 'p' in word is: 2
Was ist Python Return?
Im Gegensatz zur yield-Anweisung bewirkt die return-Anweisung, dass die Funktion beendet wird, während der Wert an die Funktion zurückgegeben wird, die sie aufgerufen hat. Funktionen, die eher prozeduraler Natur sind, geben nichts explizit an den Aufrufer zurück, sondern einen Wert, der an die aufrufende Funktion zurückgesendet wird. Obwohl eine Funktion mehrere Return-Anweisungen haben kann, kann bei jedem Aufruf jeder dieser Anweisungen nur eine davon aufgerufen werden.
Die return-Anweisung steht fast immer ganz am Ende eines Funktionsblocks. Ihr Zweck besteht darin, das Endergebnis der Ausführung aller in der Funktion enthaltenen Anweisungen zurückzugeben. Allerdings kann vor einem Funktionsblock auch eine return-Anweisung stehen, um die Ausführung aller nachfolgenden Anweisungen im Block zu stoppen. Dies kann auftreten, wenn damit die Ausführung einer Funktion verhindert wird. Dies führt dazu, dass der Aufrufer die Ausführung des Programms sofort neu startet. Wenn für das return-Objekt kein Wert angegeben wird, entspricht der Rückgabeobjekttyp „None“ dem in Python.
Das folgende Beispiel zeigt die Verwendung von return in Python -
# Show return statement class Test: def __init__(self): self.str = "Happy Birthday" self.x = "Pradeep" # This function returns an object of Test def fun(): return Test() # Driver code to test above method t = fun() print(t.str) print(t.x)
Happy Birthday Pradeep
Die folgende Tabelle hebt die wichtigsten Unterschiede zwischen Yield und Return in Python hervor -
Relativ einfach | Ausgabe | Rückkehr |
---|---|---|
Grundlagen | In den meisten Fällen müssen Sie die Yield-Funktion verwenden, um eine typische Python-Funktion in einen Generator umzuwandeln. | In den meisten Fällen wird das Ende der Ausführung durch die Verwendung des Schlüsselworts return signalisiert, das das Ergebnis an die Anweisung „zurückgibt“, die es aufgerufen hat. |
Funktionen | Es ersetzt die Rückgabe einer Funktion, um die Ausführung der Funktion anzuhalten, ohne lokale Variablen zu verlieren. | Es verlässt die Funktion und gibt einen Wert an den Aufrufer zurück. |
Verwenden | Der Anrufer verwendet diese Funktion, wenn der Generator dem Anrufer Zwischenergebnisse liefert. | Wenn eine Funktion einen Wert übergeben soll, muss dieser verwendet werden. |
Ausführen | Der nach der yield-Anweisung geschriebene Code wird im folgenden Funktionsaufruf ausgeführt. | Obwohl der nach der Return-Anweisung geschriebene Code nicht ausgeführt wird. |
Kompilieren | Es kann mehrmals ausgeführt werden. | Es läuft jeweils nur einmal. |
yield-Anweisung generiert ein Generatorobjekt und kann mehrere Werte an den Aufrufer zurückgeben, ohne das Programm zu beenden, während die return-Anweisung verwendet wird, um aus der Funktion heraus einen Wert an den Aufrufer zurückzugeben, der das Programm beendet. Die Return-Anweisung wird verwendet, um einen Wert innerhalb einer Funktion an den Aufrufer zurückzugeben.
Das obige ist der detaillierte Inhalt vonWas ist in Python der Unterschied zwischen Yield und Return?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!