> Les bases > Le langage > Générateurs
Générateurs
generator :
- c'est une fonction qui ne retourne pas vraiment, mais fait un retour temporaire jusqu'à être rappelée, et alors, elle reprend là où elle en était avec le contexte précédent. Cela permet de retourner une série de valeurs (ces fonctions sont souvent appelées coroutines).
- une fonction qui a une instruction yield à la place d'un return est automatiquement un generator. Une fois l'instruction yield atteinte, il y a retour à l'appel, jusqu'au nouvel appel qui reprend juste après l'instruction yield
- un generator s'utilise comme un iterator avec une méthode next() qui peut être appelée de manière implicite, mais ne s'utilise qu'une seule fois.
- exemple de generator :
def myGenerator(start):
while start > 0:
sys.stderr.write('current value : ' + str(start) + '\n')
yield start + 1
start -= 1 # resume here once called.
- utilisation du generator :
for x in myGenerator(7):
print(x)
- on peut aussi faire : y = myGenerator(7); print(next(y)); ou plutôt :
y = myGenerator(7)
while True:
try:
print(next(y))
except StopIteration:
break
g = (x ** 2 for x in range(100000)) renvoie un générateur : contrairement à une liste de compréhension, toutes les valeurs ne sont pas calculées, elles ne sont calculées qu'au moment où on en a besoin, quand on itère dessus :
for y in g:
print(y)
if y > 100:
break
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert