- 有__iter__方法的对象是可迭代对象(Iterable)
- 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator)
- 所有的Iterable均可以通过内置函数iter()来转变为Iterator
class C: def __iter__(self): return iter('python') obj = C() for item in obj: print(item)
for循环工作流程:
- 如果obj是迭代器,那么直接调用迭代器的next()进行遍历
- 如果obj是可迭代对象,那么先执行obj下的__iter__方法,获取到迭代器,然后调用迭代器的next()方法进行遍历 (上面代码就是这种情况)