Je sais que le rendement transforme une fonction en générateur, mais quelle est la valeur de retour de l'expression de rendement elle-même? Par exemple:
def whizbang():
for i in range(10):
x = yield i
Quelle est la valeur de la variable x
lors de l'exécution de cette fonction?
J'ai lu la documentation Python: http://docs.python.org/reference/simple_stmts.html#grammar-token-yield_stmt et il semble y avoir aucune mention de la valeur de l'expression de rendement elle-même.
Vous pouvez également send
les valeurs des générateurs. Si aucune valeur n'est envoyée, x
est None
, sinon x
prend la valeur envoyée. Voici quelques informations: http://docs.python.org/whatsnew/2.5.html#pep-342-new-generator-features
>>> def whizbang():
for i in range(10):
x = yield i
print 'got sent:', x
>>> i = whizbang()
>>> next(i)
0
>>> next(i)
got sent: None
1
>>> i.send("hi")
got sent: hi
2