gpt4 book ai didi

python - 为什么用 StopIteration Exception 实现迭代的结束

转载 作者:太空狗 更新时间:2023-10-30 02:38:24 25 4
gpt4 key购买 nike

当查看有关何时引发异常以及何时在 Python 函数中简单地返回 None 的 Stackoverflow 问题时,出现的情况是您应该对意外行为使用异常并返回 None 否则。

但是,可迭代对象的 for 循环是通过 next() 方法引发的 StopIteration 异常实现的,尽管最终到达可迭代对象的“结尾”通常不是出乎意料。为什么可迭代对象上的 for 循环是这样实现的?

最佳答案

总体答案是您不能使用标记值来安全地声明迭代器/生成器的结束。简单地想象一下,您有一个 None 对象列表,None 不能再用作标记值。这就是使用 StopIteration 的原因:没有哨兵值,问题就避免了。

如果您想避免这种行为并在next 中返回一个默认值,您可以简单地调用next(generator, None)

关于python - 为什么用 StopIteration Exception 实现迭代的结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47041472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com