pythonyield生成器的作用

http://www.python.org/dev/peps/pep-0255/

编译器 中最初级的模块是进行词法分析, 将源代码 转化成 token流。

可以 一次性将所有 字符转换成token list , 之后再处理;

也可以每次获取一个 token, 处理之后, 接着再获取下一个token, 即边分析边处理, 这就需要token函数 记录 当前分析的 状态, 一种是将状态 由外部调用者 传入, 一种是 函数内部自己来记录这个状态。

也可以使用线程之间通信的方式来处理,将token生产函数 和 token读取函数放到两个线程中。

这一切本质都是为了让代码更好看。

而yield 就是另外一种方式, 每次重入函数的时候, 都将从上次结束的地方 继续开始处理, 这个对象被称为 generator 生成器。

def fib():

    a, b = 0, 1

    while True:

             yield b

             a, b = b, a+b

调用函数执行到yield的时候 将会 返回一个生成器, 接着调用生成器的 next() 将会 执行直到再次执行到yield 这里 并将 b 的值返回, 有点类似于 断点调试程序, 查看程序的内部变量的状态。

原文地址:https://www.cnblogs.com/liyonghelpme/p/4273770.html