En Python, vous pouvez utiliser yield
dans une fonction en tant que générateur.
Par exemple
def foo():
for i in range(10):
yield i
Écrit comme
for k in foo():
print(k)
Si vous écrivez, la valeur de 0 à 9 s'affiche.
Par exemple
def hoge():
for i in range(10):
yield i
return i+1
Si vous faites cela, vous n'obtiendrez que le résultat de ** yield. ** **
Ceci est une spécification Python, et la raison en est que le retour dans Generator est traité comme StopIteration
.
Par conséquent, il est prudent de penser qu'il est fondamentalement difficile d'utiliser le rendement et le rendement ensemble.
Au contraire, le rendement agit comme un retour dans le générateur, donc fondamentalement
Il vaut mieux se limiter au rendement ou au rendement.
Si, pour une raison quelconque, vous voulez l'utiliser avec return, utilisez yield from
pour obtenir la valeur définie pour return.
Vous pourrez le faire.
Par exemple
def buzz():
i = 0
for j in range(10):
i += j
yield j
return i
Si vous écrivez une fonction comme celle-ci et que vous souhaitez retourner, préparez une nouvelle fonction séparément et procédez comme suit Si vous l'écrivez, vous pouvez atteindre la valeur de retour.
def getter():
x = yield from buzz()
yield x
Cependant, notez que "yield from" est une technique qui ne peut être décrite que dans une fonction.
Recommended Posts