90 votes

il n'y a pas de fonction next() dans un générateur de rendement en python 3

En cette question J'ai une séquence sans fin en utilisant des générateurs Python. Mais le même code ne fonctionne pas en Python 3 parce qu'il semble qu'il n'y a pas de next() fonction. Quel est l'équivalent pour la fonction next fonction ?

def updown(n):
    while True:
        for i in range(n):
            yield i
        for i in range(n - 2, 0, -1):
            yield i

uptofive = updown(6)
for i in range(20):
    print(uptofive.next())

135voto

Greg Hewgill Points 356191

En Python 3, utilisez next(uptofive) au lieu de uptofive.next() .

Le système intégré next() fonctionne également dans Python 2.6 ou supérieur.

46voto

cfi Points 2775

Dans Python 3, pour rendre la syntaxe plus cohérente, l'élément next() a été renommée en __next__() . Vous pourriez utiliser celui-là. Ceci est expliqué dans PEP 3114 .

En suivant la solution de Greg et en appelant le intégré next() fonction (qui essaie ensuite de trouver l'adresse IP de l'objet). __next__() ) est recommandé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X