位置: 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去除底部)

  • 小米10与华为mate30的对比(小米10与华为mate20pro)

    小米10与华为mate30的对比(小米10与华为mate20pro)

  • 华为nova4e是安卓手机吗(华为nova4e是安卓10吗)

    华为nova4e是安卓手机吗(华为nova4e是安卓10吗)

  • 荣耀v9可以放两张电信卡吗(荣耀v9支持双频wifi吗)

    荣耀v9可以放两张电信卡吗(荣耀v9支持双频wifi吗)

  • 华为手机下载的视频在哪里(华为手机下载的音乐在哪个文件夹)

    华为手机下载的视频在哪里(华为手机下载的音乐在哪个文件夹)

  • 手机售后检测会拆机吗?(手机售后检测会查手机吗)

    手机售后检测会拆机吗?(手机售后检测会查手机吗)

  • 手机防窥原理(手机防窥屏的原理是什么)

    手机防窥原理(手机防窥屏的原理是什么)

  • 微信群移除成员其他人知道吗(微信群移除成员怎么弄)

    微信群移除成员其他人知道吗(微信群移除成员怎么弄)

  • beats solo3支持安卓吗?(beats solo3兼容安卓吗)

    beats solo3支持安卓吗?(beats solo3兼容安卓吗)

  • 五分钟的视频怎么发到微信(五分钟的视频怎么发到微信好友)

    五分钟的视频怎么发到微信(五分钟的视频怎么发到微信好友)

  • 抖音视频左下角的三角形是什么意思(抖音视频左下角的眼睛是什么意思)

    抖音视频左下角的三角形是什么意思(抖音视频左下角的眼睛是什么意思)

  • 微信号注销多久生效(微信号注销多久可以绑定新的微信号)

    微信号注销多久生效(微信号注销多久可以绑定新的微信号)

  • 编码有哪些(信源编码有哪些)

    编码有哪些(信源编码有哪些)

  • 手机文件打不开下载什么软件(手机文件打不开下载什么软件才能打开呀)

    手机文件打不开下载什么软件(手机文件打不开下载什么软件才能打开呀)

  • 微信群发多少消息会封号(微信群发多少消息会封号多久解封)

    微信群发多少消息会封号(微信群发多少消息会封号多久解封)

  • 如何进入dos(如何进入dos界面)

    如何进入dos(如何进入dos界面)

  • 视频聊天时截屏对方知道吗(视频聊天截屏怎么听不到对方的声音?)

    视频聊天时截屏对方知道吗(视频聊天截屏怎么听不到对方的声音?)

  • 如何快速调小米手机时间(如何快速调小米手机亮度)

    如何快速调小米手机时间(如何快速调小米手机亮度)

  • 抖音访问别人会有记录吗(抖音访问别人会留下访问记录吗)

    抖音访问别人会有记录吗(抖音访问别人会留下访问记录吗)

  • 联想客户服务中心修电脑吗(联想客户服务中心和3c服务中心区别)

    联想客户服务中心修电脑吗(联想客户服务中心和3c服务中心区别)

  • 怎么让微信头像晃动(怎么让微信头像对一人显示的不一样)

    怎么让微信头像晃动(怎么让微信头像对一人显示的不一样)

  • 苹果耳机2代有线和无线区别(苹果耳机2代有几个版本)

    苹果耳机2代有线和无线区别(苹果耳机2代有几个版本)

  • 下单转化率低怎么办(下单转化率低怎么说)

    下单转化率低怎么办(下单转化率低怎么说)

  • 苹果人像模式在哪(苹果人像模式在哪里打开)

    苹果人像模式在哪(苹果人像模式在哪里打开)

  • vivoz3x返回键在哪里(vivoz3i手机怎么调出返回键)

    vivoz3x返回键在哪里(vivoz3i手机怎么调出返回键)

  • 收到退回的以前年度租金怎么处理
  • 初税亩是什么意思
  • 销售材料的会计分录在实务第几章节
  • 出票后定期付款的汇票是什么意思
  • 其他应收款增加银行存款减少的原因
  • 报税金额和实际做账金额不一样
  • 金蝶标准版如何结转到下月
  • 原始凭证分类的目的是什么?
  • 向银行办理托收手续记什么科目
  • 小规模收的专票怎么做账
  • 附加税费申报表出不来数据
  • 增值税本期应补退税额为负数怎么处理
  • 住房被征用赔偿标准
  • 什么叫复式记账凭证
  • 融资租赁营改增时间
  • 小规模纳税人开票税率
  • 换件维修的部件什么意思
  • 公司租房子出去物业费可以代付吗
  • 固定资产月底怎么处理
  • 你如何界定成本与费用之间区别?
  • 发票一直显示报送中怎么处理
  • 有限合伙的定义
  • 收到税局代增值税专用发票已作废的退款怎么做账
  • 小规模纳税人开了3%的专票还能享受1%
  • 经营范围外的业务可以开发票吗
  • 企业净资产增长率上升说明什么
  • 房子报废
  • 高新技术企业的研发费用比例
  • 咨询服务用什么科目
  • 合并报表抵消分录实例
  • 无效发票不能报销怎么办
  • 常见的dump抓取方法
  • 银行代扣的年费怎么退
  • 当前页面的脚本发生错误是否要在此页面上继续运行脚本
  • PHP:curl_multi_getcontent()的用法_cURL函数
  • 前端数据统计图
  • 莱达尔湖, 英格兰坎布里亚郡湖区 (© Tranquillian1/iStock/Getty Images Plus)
  • vue设置图片
  • uniapp编译原理
  • php 错误提示
  • 如何提升人工劳动效率
  • 计提医疗保险费的会计分录
  • 微信公众号认证主体是什么意思
  • 残保金计税基数是什么
  • 在成本了核算工资怎么算
  • 首涂第二十一套模板
  • python从键盘输入正整数n,计算1+2+3
  • 用于职工福利的固定资产折旧
  • 劳务费个人所得税怎么查
  • 个体户核定征收超过了怎么办
  • 企业注销指的是哪些
  • 专票已认证还能作废吗
  • 增值税留抵退税的账务处理
  • 私车公用产生的费用如何入账
  • 委托代销安排的迹象有哪些
  • 主营业务收入记多栏还是三栏
  • 高新企业研发费用会计分录
  • 物流公司主营业务成本会计分录
  • mysql绿色版和安装版有什么区别
  • sql2005开启xp_cmdshell
  • mysql 5.7.18 winx64安装配置方法图文教程
  • FreeBSD 6.2-RELEASE下载
  • bios设置bios密码
  • 2021win10激活
  • 苹果mac安装win7系统
  • ghost后不能启动
  • 如何延长手机电池使用寿命
  • 忘记mysql密码
  • font system
  • mac如何搜索应用
  • linux命令find用法详解
  • cocos2dx入门
  • 炉石 xhope
  • shell脚本实现文件移动、复制等操作
  • django forms.py
  • javascript获取数据
  • 国家税务总局官网电子税务局
  • 政府免费
  • 电子税务局备案财务会计制度
  • 一巩固三衔接
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设