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