python 3中的yield生成器中没有next()函数
在这个问题中 ,我有一个使用Python生成器的无尽的序列。 但是相同的代码在Python 3中不起作用,因为它似乎没有next()
函数。 什么是next
function的等价物?
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__()
方法)。