python中的迭代器和生成器

迭代器

python中只要实现了__iter____next__方法的对象都可以称之为迭代器,迭代器是一个带状态的对象,可以记录迭代的位置。

我们可以这样理解,迭代器对象中存在一个有序的序列,每当我们使用实现一次__next__方法,迭代器就会按照顺序吐出序列中的下一个值,直到把所有的值全部吐出之后,抛出StopIteration异常。

生成器

python中的生成器是一种特殊的迭代器,因为生成器生成的是一个迭代器对象,而这个迭代器中只有一个值,也就是说生成器生成的这个迭代器只可以迭代一次

例如我们对一个函数使用yield关键字进行值得返回,就可以实现python简单的生成器,例如

def get_num():
    for i in range(10):
        yield i


print(get_num())

以上的输出为:

每当我们调用该生成器时,生成器就运行一次,但是该生成器内部的for循环并不是全部运行完后返回的值,我们可以使用如下方法证明:


python中的迭代器和生成器_第1张图片
image.png

如此一来就证明生成器生成的迭代器中只有一个值,当程序需要时,生成器会从上次的“断点”位置再次运行,进而再次生成一个迭代器,直到生成器中无法在生成新的迭代器而终止。

以上纯属个人理解,如有错误欢迎指正

你可能感兴趣的:(python中的迭代器和生成器)