生成器-generator:
1,生成器就是一个可迭代对象(Itrable)
2,实现的两种方法:
1)li = [1,2,3]
(for i in li)
2)函数中有yield:
def function_name():
yield something
可迭代对象:
low:内部有__iter__方法
advance:如果类中包含有__iter__方法,则由这个类实例化的对象为可迭代对象。
可迭代对象.__iter__ ()返回迭代器
迭代器-iterator:
满足2个条件:1,有__iter__方法,2,next方法;
生成器一定是迭代器,迭代器不一定是生成器;
for循环做的3件事: 1)调用可迭代对象的iter()方法得到迭代器对象(当for后面跟的是可迭代对象时才有这步操作,如果已经是迭代器则直接进行第二步),2)不断调用迭代器对象的next()方法;3)捕捉StopIteration