jan*_*jan 4 python error-handling iterator exception
在查看Stackoverflow时 - 关于何时引发异常以及何时简单地返回NonePython函数的问题,新出现的图片是您应该使用异常来表示意外行为,None否则返回.
但是,迭代的for循环是通过方法StopIteration引发的Exception 实现的next(),尽管最终到达iterable的"end"通常并不意外.为什么for循环迭代迭代实现的方式是什么?
总的答案是你不能使用sentinel值来安全地声明迭代器/生成器的结束.想象一下,你有一个None对象列表,None不能再用作标记值.这StopIteration就是使用的原因:没有哨兵价值,避免了问题.
如果要避免此行为并返回默认值next,则只需调用即可next(generator, None).