前言前面内容的介绍,应该能让我们更容易理解和掌握Python中的可迭代对象和迭代器(Iterable&Iterator)。在本篇内容中,我们将进一步介绍迭代器的相关内容。迭代器协议在Python中,迭代器(Iterator)对象需要支持以下两种方法,它们共同构成了迭代器协议:1)__iter__():该对象的方法返回迭代器对象本身。这是要求容器和迭代器与for-in语句一起使用所必需的。您还可以使用内置的iter()函数,它实质上是在幕后调用__iter__()方法。2)__next__():返回迭代器的下一个项目。如果没有更多项目,则抛出StopIteration异常。您还可以使用内置的next()函数来读取下一项,这实际上是调用__next__()方法。正如我们之前所说,列表、元组、字典和集合都是可迭代的类型。换句话说,它们是可以从中获得迭代器的类型。看例子:代码片段Listing-01输入结果如下:ABC在示例代码中,我们定义了一个可迭代的元组。然后在这个可迭代对象上调用iter()函数。iter()函数返回一个迭代器,我们将其命名为tupIter。然后多次调用next()函数。next()函数在每次执行时自动返回迭代器中的下一项。看下一段示例代码:代码snippet-02运行输出的结果是:Py在上面的代码清单中调用string对象的__iter__()方法。字符串对象实现迭代器协议,因此字符串是包含字符序列的可迭代对象。调用__iter__()方法直接返回一个迭代器。然后通过返回的迭代器调用__next__()方法,将迭代器中元素的内容一一输出。总之,只要实现了迭代器协议的对象,就可以按照上面两种方法进行对象的迭代调用。迭代器遍历正如我们在前面的介绍中看到的,我们使用next()函数(或__next__()方法)手动遍历迭代器的项。当next()函数到达迭代器的末尾时,没有更多数据可返回,您将得到StopIteration异常。请看例子:CodeSnippetList-03运行上面的程序,输出类似如下:102030Traceback(mostrecentcalllast):File...,in
