【发布时间】:2015-11-07 15:42:26
【问题描述】:
在 Java 中,迭代器有一个 hasNext() 方法(如果我没记错的话——我已经很久没有用 Java 编程了,所以细节可能不详)。在单步执行迭代器时,查询hasNext() 以查看是否应该停止。
在 Python 中,没有 hasNext(),当迭代器想要指示您应该停止时,它们会引发 StopIteration 异常。为什么会有差异?
我可以想象,不需要hasNext() 可以减少实现迭代器的工作;那么,为什么Java和其他语言都使用它呢?这是哲学上的差异,还是出于某种原因,Python 中的例外情况更容易/更快?
【问题讨论】:
-
@ajcr:谢谢!以后我会先找程序员来解决这类问题。我觉得这个问题不是它当前标记为重复的内容的重复,但它是您链接中问题的重复(我现在很受启发)。我们可以为后代改变它吗?
-
我投票结束这个问题,因为它是关于语言设计的,它更适合程序员(和already answered)。
标签: python iterator language-design python-internals