当没有更多元素可以产生时,Python生成器是否应该引发异常?
哪一个?
答案 0 :(得分:9)
它没有,但它可以引发StopIteration。
结束迭代的更常用的方法是让函数结束并自然返回,或者使用return语句。这将导致代表您提出StopIteration。
答案 1 :(得分:9)
我知道你必须手动引发StopIteration的唯一一次是在类上实现next()方法以表示迭代器已终止。对于生成器(函数中包含yield语句),函数结束或return语句将为您正确触发StopIteration。