Python生成器下一个方法

时间:2016-10-24 06:46:00

标签: python python-2.7 generator

对于生成器的next方法,我使用下面的示例。我试图找到next方法的Python文档,但是失败了,任何人都可以帮忙指出吗?

我想找到官方文档的目的是我想在下面的示例中查找所有形式的next方法和第二个参数None的含义。

slice = (x**2 for x in range(0,100))
first = next(slice, None)
print first
for item in slice:
    print item

1 个答案:

答案 0 :(得分:2)

next()功能,因此它列在functions documentation中:

  

next(iterator[, default])
  通过调用其__next__()方法从迭代器中检索下一个项。如果给出 default ,则在迭代器耗尽时返回,否则引发StopIteration

然后第二个参数是默认值,如果iterator.__next__()引发StopIteration则返回。如果未设置默认值,则不会捕获StopIteration异常但会传播:

>>> def gen():
...     yield 1
...
>>> g = gen()
>>> next(g, 'default')
1
>>> next(g, 'default')
'default'
>>> g = gen()
>>> next(g, 'default')
1
>>> next(g)  # no default
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

对于您提供的具体示例,默认值相当多,因为(x**2 for x in range(0,100))生成器表达式保证至少有一个结果。

PyCharm可以向您展示Python标准库函数的文档;只需使用快速文档功能( CTRL-Q )。