我在过去了解到,如果程序中存在某些不正常的情况,应该触发Exception。例如读取文件时发生错误。 如果你看这个python代码,你会看到StopIteration Exception被激发。但这不是该计划的一种异常行为。所以我的问题是:我们应该在这种情况下举一个例外吗?谢谢Python迭代器异常
class MyIterator():
def __init__(self, n):
self.max = n
def __iter__(self):
self.count = 0
return self
# For Python3
def __next__(self):
if self.count == self.max:
raise StopIteration
self.count += 1
return self.count - 1
c = MyIterator(4)
for i in c:
print(i)
是的,你应该。它告诉迭代器到达最后的for循环。 – spectras
具体来说:是的,这就是迭代器协议的工作原理,[如文档所述](https://docs.python.org/3/library/stdtypes.html#typeiter)。一般来说:在Python中使用异常进行流量控制是很常见的事情 - 它更容易要求原谅而不是权限*(https://docs.python.org/3/glossary.html#term-eafp)。顺便说一下, – jonrsharpe
相关文档是[here](https://docs.python.org/3/howto/functional.html#iterators)。 – spectras