溫馨提示×

Python迭代器協(xié)議如何工作

小樊
81
2024-11-01 23:10:08
欄目: 編程語言

Python 迭代器協(xié)議是一個定義了迭代器對象應(yīng)遵循的規(guī)范

  1. __iter__() 方法:這個方法返回迭代器對象本身。在 Python 中,可以使用 for 循環(huán)遍歷一個可迭代對象,這是因為內(nèi)置函數(shù) iter() 會調(diào)用對象的 __iter__() 方法來獲取迭代器。
class MyIterable:
    def __iter__(self):
        return self
  1. __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),從而簡化了遍歷操作。

0