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

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

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

109147 次浏览

这是正确的做法。

也可以使用 next(gen)

Http://docs.python.org/library/functions.html#next

是的,或者 next(gen)在2.6 + 。

在 Python < = 2.5中,使用 gen.next()。这将适用于所有 Python 2.x 版本,但不适用于 Python 3. x

在 Python > = 2.6中,使用 next(gen)。这是一个内置的功能,并更清楚。它也可以在 Python3中工作。

这两个函数最终都会调用一个特殊命名的函数 next(),它可以通过子类化来重写。然而,在 Python3中,这个函数被重命名为 __next__(),以便与其他特殊函数保持一致。

在 python3中没有 gen.next(),但是仍然可以使用 next(gen)。 要我说有点奇怪,但事实就是如此。

使用(对于 python 3)

next(generator)

这里有一个例子

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

应该打印

0
1

要获取与 python3及以上版本中的生成器对象关联的值,请使用 next(<your generator object>)。 后续对 next ()的调用会在队列中生成连续的对象值。