一、迭代器和生成器的定义
可迭代对象并不是指某一个数据类型,而是特指存储了元素的一个容器对象。这里的容器对象可以具象为:列表、字典、元组、字符串、range都算是一个"容器"。可迭代对象有个方法叫_iter_()方法,翻译过来叫做迭代。纯可迭代对象的内部数据"所见即所得",可迭代的数据是已经看得见的数据了。
首先迭代器肯定是一个可迭代对象,迭代器拥有迭代对象的所有特征。迭代器同时拥有__iter__()和__next__()方法。迭代器可以记住遍历的位置(for 的工作核心之一)。迭代器是一个惰性机制,何为惰性。不叫我动,我不动,叫我,我才动。
生成器肯定是一个迭代器,也是一个可迭代对象,一边迭代一边生成数据。生成器有__iter__()和__next__()还有一个yield关键字/命令(类似return),生成器之所以能生成是因为保存了一套算法/逻辑可以持续生成数据,yield返回一个值,但是不会结束函数,会记住当前值的位置。
标签:__,容器,迭代,Python,生成器,iter,对象 From: https://www.cnblogs.com/longlyseul/p/18137040