Les générateurs

Les générateurs sont:

  • des fabriques à itérables

  • sont créés comme des fonctions mais utilisent yield à la place de return.

Ils s’agit donc d’un moyen simple de réaliser des boucles complexes.

[1]:
# Principe de mise en oeuvre

def carre_decroissant(valeur):  # def comme pour une fonction
    valeur = int(valeur)
    while valeur:               # une boucle, ici : while
        yield valeur ** 2       # yield dans la boucle
        valeur -= 1

print(type(carre_decroissant))
print(carre_decroissant)
<class 'function'>
<function carre_decroissant at 0x7fb1e02c7d90>
[2]:
# construction d'un générateur

generateur = carre_decroissant(5)

print(type(generateur))
print(generateur)
<class 'generator'>
<generator object carre_decroissant at 0x7fb1e02abdb0>
[3]:
# exploitation du générateur

for valeur in generateur:
    print(valeur)
25
16
9
4
1

Exercices