zoukankan      html  css  js  c++  java
  • 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 的值返回, 有点类似于 断点调试程序, 查看程序的内部变量的状态。

  • 相关阅读:
    『GoLang』接口
    『GoLang』结构体与方法
    『GoLang』包
    『GoLang』字典Map
    『GoLang』数组与切片
    利用griddata进行二维插值
    HTML 标签的 for 属性
    python之成像库pillow
    Python之模块IO
    StringIO和BytesIO
  • 原文地址:https://www.cnblogs.com/liyonghelpme/p/4273770.html
Copyright © 2011-2022 走看看