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

Jua*_*nti 8 python

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

哪一个?

Sha*_*way 11

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


Mar*_*ers 9

它没有,但它可以引发StopIteration.

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