如何从Python中的生成器获取一个值?
非常基本的问题 – 如何从Python中的生成器获取一个值?
到目前为止,我发现我可以通过编写gen.next()
来获得一个。 我只是想确保这是正确的方式?
是的,或者在2.6+以后next(gen)
。
在Python <= 2.5中,使用gen.next()
。 这将适用于所有Python 2.x版本,但不适用于Python 3.x
在Python> = 2.6中,使用next(gen)
。 这是一个内置的function,更清晰。 它也将在Python 3中工作。
这两个都最终调用一个专门命名的函数next()
,它可以被子类重写。 然而,在Python 3中,该函数已被重命名为__next__()
,以与其他特殊函数保持一致。
在python 3中,你没有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