在Python中,迭代器協議要求實現兩個方法:__iter__()
和 __next__()
。為了避免死循環,我們需要確保在每次調用 __next__()
方法時,都能返回一個有效的元素,直到沒有更多元素可以返回為止。
以下是一個簡單的示例,展示了如何實現一個避免死循環的迭代器:
class MyIterator:
def __init__(self, start, end):
self.start = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.start >= self.end:
raise StopIteration
else:
self.start += 1
return self.start - 1
# 使用示例
iterator = MyIterator(0, 5)
for num in iterator:
print(num)
在這個例子中,MyIterator
類實現了迭代器協議。__iter__()
方法返回迭代器對象本身,而 __next__()
方法在每次調用時檢查當前值是否在指定范圍內。如果在范圍內,則返回當前值并將迭代器向前移動一個位置。當迭代器到達范圍的末尾時,__next__()
方法會引發 StopIteration
異常,從而結束迭代。
這個實現可以避免死循環,因為每次調用 __next__()
方法時,我們都會檢查是否還有元素可以返回。如果沒有,我們會引發 StopIteration
異常,而不是繼續執行循環。