在this question中,我使用Python生成器进行无休止的序列。但是相同的代码在Python 3中不起作用,因为它似乎没有next()
函数。 next
函数的等价物是什么?
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())
答案 0 :(得分:105)
在Python 3中,使用next(uptofive)
代替uptofive.next()
。
内置的next()
函数也适用于Python 2.6或更高版本。
答案 1 :(得分:41)
在Python 3中,为了使语法更加一致,next()
方法已重命名为__next__()
。你可以用那个。这在PEP 3114中解释。
建议遵循Greg的解决方案并调用builtin next()
function(然后尝试查找对象的__next__()
方法)。