python 3中的yield生成器中没有next()函数

在这个问题中 ,我有一个使用Python生成器的无尽的序列。 但是相同的代码在Python 3中不起作用,因为它似乎没有next()函数。 什么是nextfunction的等价物?

 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()) 

在Python 3中,使用next(uptofive)而不是uptofive.next()

内置的next()函数也适用于Python 2.6或更高版本。

在Python 3中,为了使语法更加一致, next()方法被重命名为__next__() 。 你可以使用那个。 这在PEP 3114中有解释。

遵循Greg的解决scheme并调用内置的next()函数 (然后尝试查找对象的__next__()方法)。