Leçon 3 / 10 — Chapitre 5: Itérateurs, générateurs et context managers
Le mot-clé yield : une fonction génératrice
Écrire __iter__/__next__ à la main est verbeux pour un cas simple. Une fonction génératrice, contenant au moins un yield, produit le même résultat bien plus simplement : Python génère l'itérateur automatiquement.
def compter(limite):
actuel = 1
while actuel <= limite:
yield actuel
actuel = actuel + 1
for n in compter(3):
print(n)
Ce code affiche 1, 2, puis 3 — exactement le même résultat que Compteur à la leçon précédente, avec bien moins de code. yield actuel suspend l'exécution de la fonction à cet endroit précis, renvoie actuel à l'appelant, puis reprend juste après yield au prochain appel — la fonction se souvient de son état (ici, la valeur de actuel) entre deux reprises.
Une fonction contenant yield ne s'exécute pas immédiatement à l'appel : compter(3) renvoie un objet générateur, sans exécuter aucune ligne du corps de la fonction tant que rien ne le parcourt.
generateur = compter(3)
print(next(generateur))
print(next(generateur))
Ce code affiche 1, puis 2 : chaque next() reprend l'exécution jusqu'au yield suivant — le même protocole __next__ vu à la première leçon, mais généré automatiquement par Python.
À vous de jouer : écrivez une fonction génératrice avec yield qui produit les nombres de 1 à une limite donnée, 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