什么是迭代器?它是一个带状态的对象,在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()(python2中实现next())方法的对象都是迭代器,__iter__返回迭代器自身,__next__返回容器中的下一个值,如果容器中没有更多元素了,则抛出StopIteration异常。可迭代对象实现了__iter__方法,该方法返回一个迭代器对象,本文主要介绍Python 迭代器中的StopIteration。

Python 常用术语

1、StopIteration

如果有足够的next()语句,或者如果在for循环中使用了该语句,则以上示例将永远继续下去。

为了防止迭代永远进行,我们可以使用StopIteration语句。

__next__()方法中,如果迭代执行了指定的次数,我们可以添加终止条件以引发错误:

例如:

在20次循环后停止:

class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        if self.a <= 20:
            x = self.a
            self.a += 1
            return x
        else:
            raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
    print(x)
# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
    try:
        # 获得下一个值:
        x = next(it)
    except StopIteration:
        # 遇到StopIteration就退出循环
        break

相关文档:

Python 迭代器教程

Python 迭代器(Iterator)

Python 迭代器(Iterator)和可迭代(Iterable)

Python 遍历迭代器

Python 定义迭代器

Python 迭代器中的StopIteration

Python 常用术语

推荐文档