1. 生成器的概念

生成器是Python中的一个对象,对这个对象进行操作,可以依次生产出按生成器内部运算产生的数据。但是要注意,如果不对生成器进行操作,是不会产生数据的。称这样的方式为惰性求值,延或者迟求值。

2. 构造生成器

2.1生成器表达式

以前学过一种方式叫生成器表达式,例如:

g1 = (x*2 for x in range(5))
next(g1)
0
next(g1)
2
...

这就不说了。

2.2 生成器函数

生成器函数,就是说定义函数时,内部带yield就算生成器函数。

每次返回的值就是yield后面的值,例如:

def g2():for x in range(5):yield x*2list(g2)
[0, 2, 4, 6, 8]

这个yield很牛逼,和return一样,遇到之后就返回后面的值,但是yield会记住当时执行到哪里了,下一次执行从这个地方开始(就是生成器的特点)。

3. 生成器函数的语法糖

就是yield from 语法,一种看起来简洁的表达形式吧。

普通形式的生成器函数:

def inc1():for x in range(10000):yield x

相当于

def inc2():yield from range(10000)

也就是说,yield from iterable 相当于 yield item for item in iterable

Python的生成器函数相关推荐

  1. python之生成器(~函数,列表推导式,生成器表达式)

    一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...

  2. python生成器函数_Python 编写生成器函数

    Python 编写生成器函数,可以将许多函数简洁地写成生成器表达式的形式,比如之前讲过的映射和过滤.另外,也可以用Python内置的高阶函数(例如map()或者filter())或者生成器函数实现这些 ...

  3. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解

    Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...

  4. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

  5. python中哪个函数能生成集合_神奇的python系列11:函数之生成器,列表推导式

    1.生成器 生成器的本质是迭代器. 在python中有三种方式来获取生成器 1.通过生成器函数 2.通过各种推到式来实现生成器 3.通过数据的转换也可以获取生成器 #函数 deffunc():prin ...

  6. Python基础day4 函数对象、生成器 、装饰器、迭代器、闭包函数

    一.函数对象 正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松 ...

  7. python中的函数、生成器的工作原理

    1.python中函数的工作原理 def foo():bar()def bar():pass python的解释器,也就是python.exe(c编写)会用PyEval_EvalFramEx(c函数) ...

  8. 如何用python生成软件_python中的生成器函数是如何工作的?

    1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...

  9. 《Python Cookbook 3rd》笔记(4.6):带有外部状态的生成器函数

    带有外部状态的生成器函数 问题 你想定义一个生成器函数,但是它会调用某个你想暴露给用户使用的外部状态值. 解法 如果你想让你的生成器暴露外部状态给用户,别忘了你可以简单的将它实现为一个类,然后把生成器 ...

最新文章

  1. CF359D:Pair of Numbers(数论)
  2. Mapreuduce实现网络数据包的清洗工作
  3. 为什么Java 8中不再需要StringBuilder拼接字符串
  4. P1028 [NOIP2001 普及组] 数的计算 python
  5. 二、Zabbix-zabbix server部署-LNMP
  6. 高一计算机会考英语,高中会考英语单词表.doc
  7. Linux运维之道之网络基础学习1.3
  8. stm32学习(一)STM32简单介绍(初步了解单片机与STM32)
  9. 中国最美的十大宗教名山(图)
  10. 微商卖养生产品怎么吸粉?让客户慢慢进入你的营销场景
  11. 【转】PM、RD、QA、OP英文缩写
  12. 笔记本计算机的连接无线网络连接,笔记本电脑怎么连无线_笔记本电脑连wifi怎么连-win7之家...
  13. 微信html 全屏显示,关于微信上网页图片点击全屏放大效果
  14. 计算机体系结构复习笔记
  15. vscode插件及配置
  16. Unicode blocks 统计
  17. docker部署单机nacos
  18. 最要紧的是,我们首先要善良,其次是要诚实,再次是以后永远不要相互遗忘。...
  19. 【uni-app教程】uni-app入门教程
  20. 常见sql语句的语法错误

热门文章

  1. C++中的typeid关键字
  2. Nat.Mach.Intell.|如何改进错义突变致病性预测?使用图注意神经网络试试
  3. 什么是多态,多态的实现
  4. js 的数组怎么push一个对象
  5. SSM项目之注册页面知识点整理
  6. 样本总体方差有偏估计和无偏估计的理解
  7. C# AutoMapper 了解一下
  8. C 学习笔记 —— 高级指针话题
  9. Mega2560串口通信实现
  10. 《计算机网络》网络层之划分子网