Question très basique - comment obtenir une valeur d'un générateur en Python?
Jusqu'à présent, j'ai trouvé que je pouvais en obtenir un en écrivant gen.next()
. Je veux juste m'assurer que c'est la bonne façon?
Oui, ou next(gen)
en 2.6+.
Dans Python <= 2.5, utilisez gen.next()
. Cela fonctionnera pour toutes les versions Python 2.x, mais pas Python 3.x
Dans Python> = 2.6, utilisez next(gen)
. Il s'agit d'une fonction intégrée et plus claire. Cela fonctionnera également dans Python 3.
Ces deux éléments finissent par appeler une fonction spécialement nommée, next()
, qui peut être remplacée par un sous-classement. Dans Python 3, cependant, cette fonction a été renommée en __next__()
, pour être cohérente avec les autres fonctions spéciales.
C'est la bonne façon de procéder.
Vous pouvez également utiliser next(gen)
.
Utiliser (pour python 3)
next(generator)
Voici un exemple
def fun(x):
n = 0
while n < x:
yield n
n += 1
z = fun(10)
next(z)
next(z)
devrait imprimer
0
1
Dans python 3 vous n'avez pas gen.next (), mais vous pouvez toujours utiliser next (gen). Un peu bizarre si vous me demandez mais c'est comme ça.