Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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中,如何从生成器函数一次获取一个值?_Python_Generator - Fatal编程技术网

在Python中,如何从生成器函数一次获取一个值?

在Python中,如何从生成器函数一次获取一个值?,python,generator,Python,Generator,非常基本的问题-如何在Python中从生成器中获取一个值 到目前为止,我发现我可以通过编写gen.next()得到一个。我只是想确定这是正确的方法?这是正确的方法 您也可以使用next(gen) 是,或在2.6+中使用next(gen)。在Python=2.6中,使用next(gen)。这是一个内置函数,更清晰。它也将在Python3中工作 这两个函数最终都会调用一个特殊命名的函数,next(),该函数可以通过子类化来覆盖。但是,在Python3中,此函数已重命名为\uuuu next\uuuu

非常基本的问题-如何在Python中从生成器中获取一个值


到目前为止,我发现我可以通过编写
gen.next()
得到一个。我只是想确定这是正确的方法?

这是正确的方法

您也可以使用
next(gen)

是,或在2.6+中使用
next(gen)

在Python=2.6中,使用
next(gen)
。这是一个内置函数,更清晰。它也将在Python3中工作


这两个函数最终都会调用一个特殊命名的函数,
next()
,该函数可以通过子类化来覆盖。但是,在Python3中,此函数已重命名为
\uuuu next\uuuu()
,以与其他特殊函数保持一致。

在Python3中,您没有
gen.next()
,但仍然可以使用
next(gen)
。 如果你问我有点奇怪,但事实就是这样。

使用(用于python 3)

这里有一个例子

def fun(x):
    n = 0
    while n < x:
        yield n
        n += 1
z = fun(10)
next(z)
next(z)

要获取python 3及更高版本中与生成器对象关联的值,请使用
next()

对next()的后续调用会在队列中生成连续的对象值。

我知道这很尴尬,因为这为什么不起作用
W1=params.next()
但出现错误
AttributeError:'generator'对象没有属性'next'
@CharlieParker您必须使用Python 3!没那么奇怪。Python3应该打破传统,只允许编写更清晰更好的代码。没有向后兼容性是一些突破性更改的要点。
def fun(x):
    n = 0
    while n < x:
        yield n
        n += 1
z = fun(10)
next(z)
next(z)
0
1