前言
小伙伴们迭代器和生成器是 python 面试的时候,被问概率较高的一个知识点,很多小伙伴都不太分得清这两者的区别,今天就来给大家详细的讲解迭代器和生成器的区别。

一、可迭代对象
在讲解迭代器和生成器之前,我们得先说说可迭代对象,所谓的可迭代对象就是能够通过 for 循环迭代,逐一返回其成员项的对象称为可迭代对象, python 中可迭代对象包括
- 1、所有序列类型 :如 list、 str 和 tuple、range
- 2、非序列类型: dict、set、文件对象
- 3、实现了 __iter__() 方法的任意对象
- 4、实现了序列语义的 __getitem__() 方法的任意对象。
二、for 循环迭代到底干了啥?
1、 __iter__() 方法
__iter__() 在 python 中也被称作迭代协议,只要对象拥有 __iter__() 方法,那么该对象就实现了迭代协议,就可以进行迭代操作。
另外 __iter__() 方法的返回值,必须是一个迭代器(迭代器下章详细讲解)。
python 中的 list、str、tuple、dict、set 等类型都实现了 __iter__() (迭代协议),所以能够直接进行遍历。
当我们用 for 去遍历任何一个对象时,for 循环执行的时候,会先去调用对象的 __iter__(),根据 __iter__() 返回的迭代器,再进行迭代操作。
下面是我自己定义的一个实现 __iter__() 方法,可迭代对象的类
class

本文深入解析Python中的迭代操作,包括可迭代对象、for循环的工作原理、迭代器协议和迭代器。接着介绍了生成器的概念,强调其在节省内存方面的优势,并通过生成器表达式和生成器函数展示了生成器的用法。最后,对比了迭代器和生成器的区别,如类型、数据存储方式以及额外的方法。
最低0.47元/天 解锁文章
4万+





