4.2.1 迭代器

迭代器接口定义了两个方法,__next__ 方法没有参数,用于返回序列的下一个元素,如果没有元素就抛出 StopIteration 异常,__iter__ 方法返回自己。

根据鸭子类型的定义,一个类不用声明为迭代器,只要它实现了迭代器接口中定义的两个方法,就可以迭代:

class MyIterator:
    index = 0
    def __next__(self):
        if self.index > 2:
            raise  StopIteration
        else:
            self.index += 1
            return self.index
    def __iter__():
        return self

i = MyIterator()
next(i) # 得到 1,i 的 index 为 1
next(i) # 得到 1,i 的 index 为 2
next(i) # 得到 1,i 的 index 为 3
next(i) # 根据 if 判断的条件,抛出 StopIteration 异常,迭代结束

next 函数的参数是迭代器,用于获取迭代器中的下一个元素。

Last updated