Quelle est l’utilité du mot-clé yield en Python ? Et a quoi sert-il ?
Par exemple, j’essaie de comprendre le code suivant :
def test():
last, current = 0, 1
while True:
yield current
last, current = current, last + current
Quelle est l’utilité du mot-clé yield en Python ? Et a quoi sert-il ?
Par exemple, j’essaie de comprendre le code suivant :
def test():
last, current = 0, 1
while True:
yield current
last, current = current, last + current
yield est comme return - il renvoie ce que vous lui demandez (comme un générateur). La différence est que la prochaine fois que vous appelez le générateur, l’exécution commence à partir du dernier appel à l’instruction yield. Contrairement à return, le bloc de la pile n’est pas nettoyé lorsqu’un yield se produit, mais le contrôle est transféré à l’appelant, de sorte que son état reprendra la prochaine fois que la fonction sera appelée.
Exemple:
>>> def f():
... yield 1
... yield 2
... yield 3
...
>>> g = f()
>>> for i in g:
... print(i)
...
1
2
3
>>> for i in g:
... print(i)
...
>>> # Notez que cette fois, rien n'a été affiché
Je suppose que vous avez déjà vu l’instruction return.
Par métaphore, return et yield sont des jumeaux. return signifie « retourner et arrêter » alors que yield signifie « retourner, mais continuer ».