Leçon 4 / 10 — Chapitre 5: Itérateurs, générateurs et context managers
Générateur avec plusieurs yield et état conservé
Une fonction génératrice peut contenir plusieurs yield à des endroits différents, pas seulement dans une boucle — chaque yield suspend l'exécution, et la reprise continue exactement où elle s'était arrêtée.
def etapes_commande():
yield "Commande recue"
yield "Commande preparee"
yield "Commande expediee"
yield "Commande livree"
for etape in etapes_commande():
print(etape)
Ce code affiche les quatre étapes, une par ligne, dans l'ordre où elles sont écrites : chaque yield produit une valeur, puis la fonction reprend au yield suivant lors du prochain appel — jusqu'à atteindre la fin de la fonction, qui lève automatiquement StopIteration.
L'état d'une fonction génératrice inclut aussi ses variables locales, pas seulement sa position dans le code :
def compteur_avec_etapes():
total = 0
for i in range(3):
total = total + i
yield total
for valeur in compteur_avec_etapes():
print(valeur)
Ce code affiche 0, 1, puis 3 : total garde sa valeur accumulée entre chaque yield, exactement comme une variable normale se comporterait dans une boucle classique — la seule différence est que chaque valeur intermédiaire est produite au fil de l'exécution, plutôt qu'à la toute fin.
À vous de jouer : écrivez une fonction génératrice avec plusieurs yield à des endroits différents, et parcourez-la avec une boucle for.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 87 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès