PaliSkill
Python avancé

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