#说明:
迭代器使用的是python 中的迭代器协议:即数据类型内部包含有__iter__()方法和__next()__方法。
其中:实现上面两个方法的数据类型是一个迭代器,
只包含有__iter()__方法的数据类型是一个可迭代对象
可迭代对象和迭代器的区别就在于是否实现了__next()__方法
因此,可以说可迭代对象不一定是迭代器,但是迭代器一定是可迭代的对象。
真正实现的迭代方法是__next__()方法,要自己创建迭代器对象,必须通过此方法实现数据的迭代。
#示例:
class one:
def __iter__():pass
def __next__():pass
class two:
def __iter__():pass
one类是一个跌代器,two类是一个可迭代对象
isinstance(one(),iterator) True
isinstance(one(),iterable) True
isinstance(two(),iterator) False
isinstance(two(),iterable) True
#使用:
使用方式与生成器类似
使用迭代器不要求事先准备好整个迭代过程中的所有元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后元素可以不存在或者被销毁。因此迭代器适合遍历一些数量巨大甚至无限的序列
原文:https://blog.51cto.com/11089980/2355835