Les générateurs
Les générateurs sont:
des fabriques à itérables
sont créés comme des fonctions mais utilisent
yield
à la place dereturn
.
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