标签:__ 迭代 python two iter next isinstance
#说明:
迭代器使用的是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
#使用:
使用方式与生成器类似
使用迭代器不要求事先准备好整个迭代过程中的所有元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后元素可以不存在或者被销毁。因此迭代器适合遍历一些数量巨大甚至无限的序列
标签:__,迭代,python,two,iter,next,isinstance 来源: https://blog.51cto.com/11089980/2355835
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。