我在過去了解到,如果程序中存在某些不正常的情況,應該觸發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