Python 迭代器協議是一個定義了迭代器對象應遵循的規范
__iter__()
方法:這個方法返回迭代器對象本身。在 Python 中,可以使用 for 循環遍歷一個可迭代對象,這是因為內置函數 iter()
會調用對象的 __iter__()
方法來獲取迭代器。class MyIterable:
def __iter__(self):
return self
__next__()
方法:這個方法返回迭代器的下一個值。當沒有更多元素時,這個方法應該拋出一個 StopIteration
異常。在使用 for 循環遍歷一個可迭代對象時,Python 會自動調用此方法以獲取下一個元素。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
在這個例子中,MyIterator
類實現了迭代器協議,因為它定義了 __iter__()
和 __next__()
方法。這使得我們可以使用 for 循環遍歷這個迭代器對象:
my_iterator = MyIterator(0, 5)
for number in my_iterator:
print(number)
輸出:
0
1
2
3
4
總之,Python 迭代器協議通過定義 __iter__()
和 __next__()
方法,使得對象可以被用于 for 循環,從而簡化了遍歷操作。