Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
那里';在python 3的产量生成器中没有next()函数_Python_Python 3.x - Fatal编程技术网

那里';在python 3的产量生成器中没有next()函数

那里';在python 3的产量生成器中没有next()函数,python,python-3.x,Python,Python 3.x,在中,我有一个使用Python生成器的无休止的序列。但是相同的代码在Python3中不起作用,因为它似乎没有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(

在中,我有一个使用Python生成器的无休止的序列。但是相同的代码在Python3中不起作用,因为它似乎没有
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())

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


内置的
next()
函数也适用于Python2.6或更高版本。

在Python3中,为了使语法更加一致,将
next()
方法重命名为
\uuuuuuuuuu()
。你可以用那个。这一点在本文中进行了解释


建议遵循Greg的解决方案并调用(然后尝试查找对象的
\uuuu next\uuu()
方法)。

特别是因为该函数在版本2和版本3之间是可移植的,而这些方法(由于名称更改)并不相关。这段代码是如何工作的?我知道它确实有效,但从我读到的“当到达yield语句时,代码的执行就会停止”。(). 因此,在范围(n)中i的第一个
中,为什么
不产生
简单地返回“1”?相反,在范围中的第一个值之后,代码继续,并生成整个范围,在我看来,这似乎是一次多次调用yield。我在理解细微差别方面有点困难。
for
第一次调用从您的函数创建的生成器对象时,它将从一开始运行函数中的代码,直到命中
yield
,然后返回循环的第一个值。然后,每个调用将再次运行您在函数中编写的循环,并返回下一个值,直到没有要返回的值为止。(摘自)Whyyyyyyyyyyyyyy@KennyWorden一致性(yyy),如中所述。