PythonI/O进阶学习笔记_9.python的生成器
content: 1. 什么是生成器 2. 生成器的实现 3. 生成器的应用 一.生成器简介 1.什么是生成器 在 Python 中,使用了 yield 的函数被称为生成器(generator)。 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。 调用一个生成器函数,返回的是一个迭代器对象。 可以看到,普通函数就是返回的return,而生成器函数是生成了一个生成器对象。 为什么能和普通函数不一样返回生成器对象? 因为在python在运行之前进行编译成字节码。发现了yield关键字,所以在编译的时候就定义了。 生成器对象,实际上也是实现了我们的迭代协议的。 为啥会用到生成器? 简单举个例子: 列表所有数据都在内存中,如果有海量数据的话将会非常耗内存。如果仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 如果列表元素能按照某种算法推算出来,那我们就可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。 生成器在python中的设计使用 实现了延迟求值和惰性求值,也是后面协程实现的基础。 2.生成器怎么用 例子