他们是什么
- 什么是可迭代对象
iterable
凡是实现了__iter__方法的对象就是可迭代对象。例如list、tuple等 - 什么是迭代器
iterator
是指自身不仅实现了__iter__方法,同时实现了__next__方法。且__iter__方法返回的是对象本身 - 什么是生成器
generator
生成器是一种特殊的迭代器,自动实现了__iter__和__next__方法。我们常说的生成器就是带有yield的函数。
他们之间的联系
iterable 包含 iterator 包含 generator
有些iterable对象,比如list,是将所有的值都存储在内存中。而有些就不是,比如 iterator。
所有的 iterable 都是可以用for循环来取的其中的值的。for循环的工作原理就是先通过调用 iter方法来获取一个iterator,然后通过不停的调用next 方法来取得所有的值的