python 生成器和迭代器的区别

如题所述

第1个回答  2019-11-13
1、迭代器(iterator)是一个实现了迭代器协议的对象,python的一些内置数据类型(列表,数组,字符串,字典等)都可以通过for语句进行迭代,我们也可以自己创建一个容器,实现了迭代器协议,可以通过for,next方法进行迭代,在迭代的末尾,会引发stopIteration异常。
2、生成器(generator)是通过yield语句快速生成迭代器,可以不用iter和next方法
yield可以使一个普通函数变成一个生成器,并且相应的next()方法返回是yield后的值。一种更直观的解释是:程序执行到yield时会返回结果并暂停,再次调用next时会从上次暂停的地方继续开始执行。
显然,生成器自身有构成一个迭代器,每次迭代时使用一个yield返回
的值,一个生成器中可以有多个yield的值
相似回答