1、迭代器
概念:迭代器可以记住遍历的位置,从第一个元素开始访问,知道所有元素访问结束,只能往前,不能后退。
iter("abc") --> 返回迭代器对象(包含了__next__()方法)--> __next__() 逐一访问'abc'中的元素;
当元素用尽时,__next__() 触发 StopIteration异常来通知终止 for 循环。

2、可迭代对象
概念:如果一个对象实现了__iter__(), 这么这个对象就是可迭代对象
可迭代对象,不一定能被迭代,不一定是迭代器。
(1) 不可迭代对象, 没有__iter__() 方法

(2) 可迭代对象, 有__iter__() 方法,但不是迭代器

(3) 迭代器有__iter__() 方法和__next__()

结论:迭代器一定是可迭代对象,可迭代对象不一定是迭代器
(4) 手写可迭代器,遍历列表


2、生成器