重要的yield :相当于一个断层,我们再用next取拿出每一层
重要的next :生成器查看装置,查看每一个断层
重要的send :和next一样查看每一个段层,不过在查看第二个断层的时候,就可以对前面的"一个断层"变量进行添加值
生成器创建方式之一
s=(x*2 for x in range(5))
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))#一次只能拿一个数
# print(next(s))#most recent call last生成器只能拿出对应元素,如果想多拿就会报错

取值方法
for i in s:#生成器是一个可便利对象
print(i)

生成器创建方法2
def aoo():
print('ok')
yield 1
print("abc")
# print("xiong")
yield "返回值"
a=aoo()
next(a)#使用生成器都要用next
next(a)#使用生成器都要用next
for i in a:#使用for i in a 时可以吧返回值一并打出
print(i)#ok 1 abc 返回值

什么是可迭代对象:可以使用iter方法的就是可迭代对象
[1,2,3].__iter__()

斐波那契数列升级版
def fib(max):
n,a,b=0,0,1
while n <max:
print(b)
# a,b=b,a+b#同时进行
#改版
now=a#保护原有值
a=b#赋值
b=now+b#赋值
n+=1
fib(6)

生成器版斐波那契数列
def fib(max):
n,a,b=0,0,1
while n <max:
yield a
a,b=b,a+b#同时进行
n=n+1
g=fib(8)
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))

send使用
def aoo():
print("ok")
count=yield 22
print(count)
print('ok2')
mmd=yield 222
print(mmd)
print('ok3')
yield 22222222
g=aoo()
print(g.send(None))
print(g.send("xiong"))
print(g.send("i love you"))

生成器 yield, next ,send的更多相关文章

  1. python生成器yield和send

    创建生成器 #第一种创建生成器的方法 #使用()创建生成器,如果使用[]则创建列表 a = (x**2 for x in range(1, 5)) #可以通过next一直产生新的数据,直到最后一个报异 ...

  2. Python入门之迭代器/生成器/yield的表达方式/面向过程编程

    本章内容 迭代器 面向过程编程 一.什么是迭代 二.什么是迭代器 三.迭代器演示和举例 四.生成器yield基础 五.生成器yield的表达式形式 六.面向过程编程 ================= ...

  3. 使用yield和send实现简单的协程函数

    使用yield和send实现协程 协程的本质是在一个线程里实现多个任务之间的来回切换,我们使用yield和send可以实现简单的协程 def pro(): print(1) n = yield &qu ...

  4. 深入理解Python中的yield和send

    send方法和next方法唯一的区别是在执行send方法会首先把上一次挂起的yield语句的返回值通过参数设定,从而实现与生成器方法的交互. 但是需要注意,在一个生成器对象没有执行next方法之前,由 ...

  5. yield与send实现协程操作

    yield与send实现协程操作 之前我们说过,在函数内部含有yield语句即称为生成器. 下面,我们来看看在函数内部含有yield语句达到的效果.首先,我们来看看以下代码: def foo(): w ...

  6. 6 生成器 yield 协程

    1.生成器 ----> 1 b = [x*2 for x in range(100000000000)] MemoryError: 想生成一个存放很多数据的列表,但是又不想内存占用太多 每次用一 ...

  7. 【Python学习之十】yield之send方法

    yield作用 简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.下面以斐波拉 ...

  8. Python学习之旅—生成器对象的send方法详解

    前言 在上一篇博客中,笔者带大家一起探讨了生成器与迭代器的本质原理和使用,本次博客将重点聚焦于生成器对象的send方法. 一.send方法详解  我们知道生成器对象本质上是一个迭代器.但是它比迭代器对 ...

  9. PHP性能优化利器:生成器 yield理解

    如果是做Python或者其他语言的小伙伴,对于生成器应该不陌生.但很多PHP开发者或许都不知道生成器这个功能,可能是因为生成器是PHP 5.5.0才引入的功能,也可以是生成器作用不是很明显.但是,生成 ...

  10. [PY3]——函数——生成器(yield关键字)

    函数—生成器篇 1. 认识和区分可迭代or生成器 1.1 可迭代对象 当你建立了一个列表,你可以逐项地读取这个列表,这叫做一个可迭代对象 当你使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代 ...

随机推荐

  1. nginx架构分析之 模块化

    Nginx涉及到的模块分为核心模块.标准HTTP模块.可选HTTP模块.邮件服务模块以及第三方模块等五大类. 核心模块 核心模块是指Nginx服务器正常运行时必不可少的模块,它们提供了Nginx最基本 ...

  2. javaweb基础(36)_jdbc进行批处理

    在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...

  3. hbase的coprocessor使用(转)

    http://www.360doc.com/content/13/0320/09/4675893_272623864.shtml

  4. Java8函数之旅 (二) --Java8中的流

    流与集合    众所周知,日常开发与操作中涉及到集合的操作相当频繁,而java中对于集合的操作又是相当麻烦.这里你可能就有疑问了,我感觉平常开发的时候操作集合时不麻烦呀?那下面我们从一个例子说起. 计 ...

  5. mycat特点及用途

    Mycat关键特性 关键特性 支持SQL92标准 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理. 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera clu ...

  6. MySQL跟踪SQL&慢查询分析工具

    简介 之前的工作一直使用的SQL SERVER, 用过的都知道,SQL SERVER有配套的SQL跟踪工具SQL Profiler,开发或者定位BUG过程中,可以在操作页面的时候,实时查看数据库执行的 ...

  7. MySQL视图、事务

    view(视图):虚拟表主要用来看(查)数据基表的数据变化会在视图中体现出来 权限控制将多表查询的结果整合在视图中方便用户查看 create view v1 as select ...查询语句WITH ...

  8. 【Effective C++ 读书笔记】条款03: 尽量使用 const

    关键字const多才多艺,变化多端却不高深莫测. const 修饰指针 面对指针, 你可以指出 指针自身.指针所指物.或者两者都不是 const. 如果关键字 const 出现在星号左边,表示被指物是 ...

  9. phpstorm 安装XeDbug

    第一步:根据phpinfo()下载相对应的Xdebug插件,Xdebug下载路径https://xdebug.org/download.php 第二步:将下载好的Xdebug放到 G:\Service ...

  10. 数据分析处理库Pandas——groupby

    DataFrame结构 指定列中相同元素求和 备注:指定列"key"中相同元素的"data"值求和. 备注:指定列"A"和"B&q ...