一、三者的简要关系图
- 可迭代对象不一定是迭代器,但迭代器一定是可迭代对象
- 定义可迭代对象,必须实现__iter__方法;定义迭代器,必须实现__iter__和__next__方法
二、迭代器
1、定义
迭代器是一个可以记住遍历位置的对象。
2、特点
边用边生成,不再依赖一个现存的数据集合来存放数据,节省了大量内存空间。
三、生成器
1、定义
使用了yield关键字的函数被称为生成器。
2、注意
- 生成器是函数,且返回的是迭代器。即python的生成器是一个返回迭代器的函数。其中yield与return都是用来返回函数的“值”。区别在于return返回后,函数终止;而yield会保存当前函数的执行状态,在返回后,函数又回到之前保存的状态继续执行。
- 生成器函数包含一个或者多个yield,即可以当遇到一个yield返回后从当前位置继续执行yield。
例如:
都是输出:
参考博文:
1、https://blog.csdn.net/jinixin/article/details/72232604
2、https://blog.csdn.net/qq_45807032/article/details/105219674