参考:
https://www.jianshu.com/p/24876cf14a5c
iterator:迭代器,定义了__next__(),它还有__iter__()函数(返回迭代器本身)
iterable:可迭代对象,定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法
generator:生成器
生成器都是迭代器;生成器和迭代器都是可迭代对象;list,dict,tuple,set等属于可迭代对象却不是迭代器。
Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,Iterator的计算是惰性的。
一个函数+yield ——> 生成器(yield 是生成器实现__next__()方法的关键)