在Python中,如何从生成器函数一次获取一个值?
非常基本的问题-如何在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
到目前为止,我发现我可以通过编写
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