非常基本的问题——如何在 Python 中从生成器获取一个值?
到目前为止,我发现我可以通过写 gen.next()得到一个。我只是想确定这条路是对的?
gen.next()
这是正确的做法。
也可以使用 next(gen)。
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__(),以便与其他特殊函数保持一致。
next()
__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 ()的调用会在队列中生成连续的对象值。
next(<your generator object>)