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