In Python können Sie "Yield" in einer Funktion als Generator verwenden. Zum Beispiel
def foo():
for i in range(10):
yield i
Geschrieben als
for k in foo():
print(k)
Wenn Sie schreiben, wird der Wert von 0 bis 9 angezeigt.
Zum Beispiel
def hoge():
for i in range(10):
yield i
return i+1
Wenn Sie dies tun, erhalten Sie nur das Ergebnis der ** Ausbeute. ** ** ** Dies ist eine Python-Spezifikation, und der Grund dafür ist, dass die Rückgabe im Generator als "StopIteration" behandelt wird. Daher kann man mit Sicherheit davon ausgehen, dass es grundsätzlich schwierig ist, Rendite und Rendite zusammen zu verwenden. Die Rendite wirkt sich also im Grunde genommen als Rendite innerhalb des Generators aus Es ist besser, entweder auf Rendite oder Rendite einzugrenzen.
Wenn Sie es aus irgendeinem Grund mit return verwenden möchten, verwenden Sie yield from
, um den für return festgelegten Wert abzurufen.
Sie werden es schaffen.
Zum Beispiel
def buzz():
i = 0
for j in range(10):
i += j
yield j
return i
Wenn Sie eine solche Funktion schreiben und zurückkehren möchten, bereiten Sie eine neue Funktion separat vor und gehen Sie wie folgt vor Wenn Sie es schreiben, können Sie den Wert der Rückgabe erreichen.
def getter():
x = yield from buzz()
yield x
Beachten Sie jedoch, dass "Ausbeute von" eine Technik ist, die nur innerhalb einer Funktion beschrieben werden kann.
--Generator kann mit Ertrag erzeugt werden
Recommended Posts