当没有更多元素可以产生时,Python生成器是否应该引发异常?

时间:2010-02-23 22:47:12

标签: python

当没有更多元素可以产生时,Python生成器是否应该引发异常?

哪一个?

2 个答案:

答案 0 :(得分:9)

它没有,但它可以引发StopIteration

结束迭代的更常用的方法是让函数结束并自然返回,或者使用return语句。这将导致代表您提出StopIteration。

答案 1 :(得分:9)

我知道你必须手动引发StopIteration的唯一一次是在类上实现next()方法以表示迭代器已终止。对于生成器(函数中包含yield语句),函数结束或return语句将为您正确触发StopIteration。