Heim >Backend-Entwicklung >Python-Tutorial >Wie funktionieren Return und Yield in Python-Generatoren?
Return und Yield in Python-Generatoren
In Python vor Version 3.3 wäre die gleichzeitige Verwendung von Return- und Yield-Anweisungen innerhalb einer Generatorfunktionsdefinition erforderlich zu einem Fehler führen. Dieses Verhalten hat sich jedoch in Python 3.3 geändert.
Bedenken Sie den folgenden Code:
<code class="python">def f(): return 3 yield 2</code>
Der Aufruf von x = f() erstellt einen Generator und x.__next__() löst a aus StopIteration-Ausnahme. Dieses Verhalten unterscheidet sich von der einfachen Rückgabe von 3, die den Wert 3 zurückgegeben hätte.
Das liegt daran, dass in Python 3.3 return
Darüber hinaus ermöglicht yield from die Übertragung von Generatoren auf andere Generatoren. Betrachten Sie das folgende Beispiel:
<code class="python">def f(): return 1 yield 2 def g(): x = yield from f() print(x) for _ in g(): pass</code>
Dieser Code gibt 1 aus. g delegiert die Ausführung an f, und der von f zurückgegebene Wert (d. h. 1) wird x zugewiesen. Allerdings wird die yield 2-Anweisung in f nicht ausgeführt, da die Ausführung an g delegiert wurde.
Das obige ist der detaillierte Inhalt vonWie funktionieren Return und Yield in Python-Generatoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!