为什么next会引发'StopIteration'错误,而'for'则正常返回?

9 浏览
0 Comments

为什么next会引发'StopIteration'错误,而'for'则正常返回?

在这段代码中,为什么使用for循环没有出现StopIteration,还是for循环捕获了所有异常然后静默退出?如果是这样的话,为什么会有多余的return?还是raise StopIteration是由return None引起的?假设StopIteration是由return None触发的。那么GeneratorExit是在什么时候生成的?

定义countdown(n)函数,打印"从%d倒数",然后尝试以下操作:

当n大于0时,生成n并将n减1。

如果我手动执行:

c = countdown(10)
c.close() #生成GeneratorExit??

这种情况下为什么我没有看到回溯信息?

0