位置: IT常识 - 正文

python生成器中的send()方法和next()方法(python中生成器的作用)

编辑:rootadmin

推荐整理分享python生成器中的send()方法和next()方法(python中生成器的作用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python生成器怎么用,python生成器详解,python生成器的应用场景,python3 生成器,python3 生成器,python生成器yield,python生成器有几种写法,python 生成,内容如对您有帮助,希望把文章链接给更多的朋友!

在异步IO的使用时,generator是最基本的一个实现方法。python生成器有两个主要方法,一个是send一个是next。今天我们来看看两者的用法和联系。在每段代码中,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数。然后第二个next调用,进入生成器函数后,从yield语句的下一句语句(第5行)开始执行,然后重新运行到yield语句,执行后,跳出生成器函数后面再次调用next,依次类推。

python生成器中的send()方法和next()方法(python中生成器的作用)

这里我们用经典的生产者-消费者模型举个例子(摘自廖雪峰的博客)

defconsumer():r=0foriinxrange(3):yieldrr='200OK'+str(i)c=consumer()n1=c.next()n2=c.next()n3=c.next()

实际上next()和send()在一定意义上作用是相似的,区别是send()可以传递yield表达式的值进去,而next()不能传递特定的值,只能传递None进去。因此,我们可以看做c.next() 和 c.send(None) 作用是一样的。

第一次调用时,请使用next()语句或是send(None),不能使用send发送一个非None的值,否则会出错的,因为没有Python yield语句来接收这个值。

相关推荐:《Python视频教程》

下面说明下send执行的顺序。先记住,n1 = yield r这句话是从右往左执行的。当第一次send(None)(对应11行)时,启动生成器,从生成器函数的第一行代码开始执行,直到第一次执行完yield(对应第4行)后,跳出生成器函数。这个过程中,n1一直没有定义。

运行到send(1)时,进入生成器函数,此时,将yield r看做一个整体,赋值给它并且传回。此时即相当于把1赋值给n1,但是并不执行yield部分。下面继续从yield的下一语句继续执行,然后重新运行到yield语句,执行后,跳出生成器函数。即send和next相比,只是开始多了一次赋值的动作,其他运行流程是相同的。

defconsumer():r='here'whileTrue:n1=yieldr#这里的等式右边相当于一个整体,接受回传值ifnotn1:returnprint('[CONSUMER]Consuming%s...'%n1)r='%d00OK'%n1defproduce(c):aa=c.send(None)n=0whilen<5:n=n+1print('[PRODUCER]Producing%s...'%n)r1=c.send(n)print('[PRODUCER]Consumerreturn:%s'%r1)c.close()c=consumer()produce(c)

运行结果:

[PRODUCER]Producing1...[CONSUMER]Consuming1...[PRODUCER]Consumerreturn:100OK[PRODUCER]Producing2...[CONSUMER]Consuming2...[PRODUCER]Consumerreturn:200OK[PRODUCER]Producing3...[CONSUMER]Consuming3...[PRODUCER]Consumerreturn:300OK[PRODUCER]Producing4...[CONSUMER]Consuming4...[PRODUCER]Consumerreturn:400OK[PRODUCER]Producing5...[CONSUMER]Consuming5...[PRODUCER]Consumerreturn:500OK
本文链接地址:https://www.jiuchutong.com/zhishi/304094.html 转载请保留说明!

上一篇:day02-HTML02

下一篇:discuz如何删除forum.php(discuz去除底部)

  • gta5pc版秘籍大全作弊码(gta5 pc版)(gta5 pc版秘籍)

    gta5pc版秘籍大全作弊码(gta5 pc版)(gta5 pc版秘籍)

  • 华为mate40pro控制中心在哪里设置(华为mate40pro控制中心怎么设置)

    华为mate40pro控制中心在哪里设置(华为mate40pro控制中心怎么设置)

  • 怎么关闭电脑自动更新win10(怎么关闭电脑自动更新系统)

    怎么关闭电脑自动更新win10(怎么关闭电脑自动更新系统)

  • 微博可以设置赞不可见吗(微博设置赞赏不在主页显示)

    微博可以设置赞不可见吗(微博设置赞赏不在主页显示)

  • beats耳机红白灯交替闪如何解决(beats耳机红白灯交替闪三次)

    beats耳机红白灯交替闪如何解决(beats耳机红白灯交替闪三次)

  • 给多人发邮件用什么号隔开(给多人发邮件用什么格式)

    给多人发邮件用什么号隔开(给多人发邮件用什么格式)

  • qq头像换了没反应(为什么qq头像明明换了可是显示不出来)

    qq头像换了没反应(为什么qq头像明明换了可是显示不出来)

  • 苹果7p支持无线充电吗(苹果7p支持无线冲吗)

    苹果7p支持无线充电吗(苹果7p支持无线冲吗)

  • 学生机和普通机的区别(学生机与普通手机有什么不同)

    学生机和普通机的区别(学生机与普通手机有什么不同)

  • oppo设置本地视频为壁纸(oppo设置本地视频为动态锁屏)

    oppo设置本地视频为壁纸(oppo设置本地视频为动态锁屏)

  • qq手机浏览器无痕模式怎么打开(qq手机浏览器无法打开)

    qq手机浏览器无痕模式怎么打开(qq手机浏览器无法打开)

  • 声卡可以直接连音箱吗(声卡可以直接连单反吗)

    声卡可以直接连音箱吗(声卡可以直接连单反吗)

  • 华为手机拉黑后拨打听到什么(华为手机拉黑后打电话对方知道吗)

    华为手机拉黑后拨打听到什么(华为手机拉黑后打电话对方知道吗)

  • vivo怎么修改内存(vivo手机怎样修改内存)

    vivo怎么修改内存(vivo手机怎样修改内存)

  • word如何删除全部批注(word如何删除全部页脚)

    word如何删除全部批注(word如何删除全部页脚)

  • 发到抖音上的作品怎么删除(发到抖音上的作品怎么重新编辑)

    发到抖音上的作品怎么删除(发到抖音上的作品怎么重新编辑)

  • 手机被偷了微信怎么办(手机被偷了微信怎么冻结账号)

    手机被偷了微信怎么办(手机被偷了微信怎么冻结账号)

  • 滴滴投诉司机他知道吗(滴滴投诉司机他能知道吗)

    滴滴投诉司机他知道吗(滴滴投诉司机他能知道吗)

  • 手机耳机话筒怎么在电脑用(手机耳机话筒怎么接线)

    手机耳机话筒怎么在电脑用(手机耳机话筒怎么接线)

  • 京东会员怎么注册(京东会员怎么注销)

    京东会员怎么注册(京东会员怎么注销)

  • airpods华为手机能用吗(airpods华为手机怎么设置弹窗)

    airpods华为手机能用吗(airpods华为手机怎么设置弹窗)

  • 4.2蓝牙和5.0蓝牙区别(4.2蓝牙和5.0蓝牙什么意思)

    4.2蓝牙和5.0蓝牙区别(4.2蓝牙和5.0蓝牙什么意思)

  • 电脑开机桌面没有图标(电脑开机桌面没反应怎么办)

    电脑开机桌面没有图标(电脑开机桌面没反应怎么办)

  • 如何在Mac上更改Siri语音?Mac上更改Siri语音方法(如何在Mac上更改我的Apple ID)

    如何在Mac上更改Siri语音?Mac上更改Siri语音方法(如何在Mac上更改我的Apple ID)

  • 矿产资源补偿费计入管理费用吗
  • 小规模纳税人的企业所得税税率
  • 购进货物支付的运输费用如何计算增值税
  • 主营业务利润和利润总额
  • 金税四期正式启动
  • 机械租赁属于什么分类
  • 哪些福利费不税前扣除
  • 购买方怎么写分录
  • 通讯费没有公司抬头怎么报销
  • 公对公不开票怎么办
  • 人员工资成本占收入多少合适,占总成本多少合适
  • 报关单上消费使用单位可以交税么
  • 出口退税免税申报怎么报
  • 收到免税发票怎么做账务处理
  • 农民合作社缴附加税吗
  • 预缴增值税预缴的城建税怎么申报
  • 出口退税和企业所得税
  • 一般纳税人的主表
  • 商业保险和交强险区别
  • 股票期权个人所得税税率表
  • 计税工资和实发工资比例
  • 公司办事处人员配置标准最新
  • 简易办法计税销售额如何填写
  • 汇算清缴报告和审计报告一样吗
  • 坏账准备和资产减值损失
  • 什么是长期应付薪酬
  • win8系统如何设置u盘启动
  • 印花税是怎么计算
  • 长期贷款利息怎样计算
  • 进项税和销项税怎么理解
  • 防伪税控技术维护费可以全额抵扣吗
  • igfxsrve.exe
  • php 字符串函数
  • 买股指期货有什么条件
  • 应收票据与应付票据的使用与哪种银行结算方式有关
  • 银行本票结算的特点是什么
  • 国有土地租赁合同规定多少年
  • 阐述php的特点
  • 哪些免征增值税
  • 其他业务收入是什么意思
  • 销售赔偿款增值税和所得税
  • uniapp面试题必问的坑
  • 事业结余对应政府会计哪个科目
  • cmsv6无法连接服务器
  • 个体户个人所得税税率表
  • php shell_exec
  • vue–router
  • 质保金挂账是否需要发票
  • 发票上没有数量可以吗
  • 合并会计报表合并范围
  • 未开票收入确认错属期滞纳金怎么办
  • 金税盘购买的会计分录
  • 个税征税对象包括哪些
  • 销售公司扣款制度合法吗
  • 商场联营方案
  • 设备租赁公司怎么样
  • 出包方式建造固定资产的成本包括
  • 会计准则规定了什么
  • sql server2019还原数据库
  • 查看linux服务器内存命令
  • fedora phpMyAdmin 安装方法及介绍
  • linux dicom
  • win8系统win10有什么区别
  • msoobe.exe是什么
  • 简单3招 让win10资源管理变得更方便简洁
  • windows10离线地图
  • 水下摄影技巧
  • python程序的开发过程
  • nodejs制作网站
  • jQuery+JSON实现AJAX二级联动实例分析
  • vue music
  • unity3d mod
  • js几种类型
  • recyclerview瀑布流效果
  • 第三方审计报告需要多久
  • 青岛崂山区税务局官网
  • 代理记账代理记账价格
  • 车辆购置税属于税金及附加吗
  • 中国税务总局贵州省税务局
  • 开原航天医院官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设