迭代器和可迭代对象
迭代是数据处理的基石。迭代器模式(Iterator):惰性获取数据的方式,即一次获取一个数据项。
Python解释器需要迭代对象x时, 会自动调用iter(x).
而内置的iter函数有以下作用:
(1)检查对象是否实现了__iter__方法, 如果实现了就调用它, 获取一个迭代器。
(2)如果没有实现了__iter__方法,但是实现了__getitem__方法, Python会创建一个迭代器, 尝试按顺序(从索引0开始)获取元素。
可迭代对象, 使用iter内置函数可以获取迭代器的对象,也就是说可迭代的对象必须实现__iter__方法,但不能实现__next__方法。
标准的迭代器接口实现了两个方法:
__next__ 返回下一个可用的元素, 如果没有元素了, 抛出StopIteration
__iter__ 返回self, 以便在应该使用可迭代对象的地方使用迭代器。
可迭代的对象和迭代器之间的关系是Python从可迭代对象中获取迭代器。