013-生成器

生成器

1、概念html

  生成器是一类用来简化编写迭代器工做的特殊函数。普通的函数计算并返回一个值,而生成器返回一个能返回数据流的迭代器。python

  毫无疑问,你已经对如何在 Python 和 C 中调用普通函数很熟悉了,这时候函数会得到一个建立局部变量的私有命名空间。当函数到达 return 表达式时,局部变量会被销毁而后把返回给调用者。以后调用一样的函数时会建立一个新的私有命名空间和一组全新的局部变量。可是,若是在退出一个函数时不扔掉局部变量会如何呢?若是稍后你可以从退出函数的地方从新恢复又如何呢?这就是生成器所提供的;他们能够被当作可恢复的函数。express

  任何包含了 yield 关键字的函数都是生成器函数;Python 的 bytecode 编译器会在编译的时候检测到并所以而特殊处理。函数

  当你调用一个生成器函数,它并不会返回单独的值,而是返回一个支持生成器协议的生成器对象。当执行 yield表达式时,生成器会输出 i 的值,就像 return 表达式同样。yield 和 return 最大的区别在于,到达 yield 的时候生成器的执行状态会挂起并保留局部变量。在下一次调用生成器 __next__() 方法的时候,函数会恢复执行。spa

  这里有一个 generate_ints() 生成器的示例:code

相关文章
相关标签/搜索