为什么next会引发'StopIteration'错误,而'for'则正常返回?
- 论坛
- 为什么next会引发'StopIteration'错误,而'for'则正常返回?
9 浏览
为什么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??
这种情况下为什么我没有看到回溯信息?