Was ist in Python der Unterschied zwischen Yield und Return?

PHPz
Freigeben: 2023-09-15 15:37:02
nach vorne
1024 Leute haben es durchsucht

Was ist in Python der Unterschied zwischen Yield und Return?

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.

Was ist Python Yield?

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.

Beispiel

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)
Nach dem Login kopieren

Ausgabe

The number of 'p' in word is: 2
Nach dem Login kopieren

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.

Beispiel

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) 
Nach dem Login kopieren

Ausgabe

Happy Birthday
Pradeep
Nach dem Login kopieren

Unterschied zwischen Ertrag und Rendite in Python

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.

Fazit

Die

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage