web-dev-qa-db-fra.com

Quel est le résultat d'une expression de rendement en Python?

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.

57
slacy

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
61
jamylak