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

  • 三个细节提升电子商城网站用户体验度(如何提高电能质量指标)

    三个细节提升电子商城网站用户体验度(如何提高电能质量指标)

  • 小米电视蓝牙遥控器怎么配对(小米电视蓝牙遥控配对)

    小米电视蓝牙遥控器怎么配对(小米电视蓝牙遥控配对)

  • 华为p40可以安装谷歌吗(华为p40可以安装无线充电吗)

    华为p40可以安装谷歌吗(华为p40可以安装无线充电吗)

  • 荣耀9和荣耀9x区别(荣耀9和荣耀9x手机哪个好)

    荣耀9和荣耀9x区别(荣耀9和荣耀9x手机哪个好)

  • wxanewfiles是什么文件夹(wxnl英语什么意思)

    wxanewfiles是什么文件夹(wxnl英语什么意思)

  • 小米10红外遥控器怎么用(小米10红外遥控器没反应)

    小米10红外遥控器怎么用(小米10红外遥控器没反应)

  • 刚注册的淘宝号就异常了(刚注册的淘宝号怎么养)

    刚注册的淘宝号就异常了(刚注册的淘宝号怎么养)

  • 分辨率1920x1080是几k(分辨率1920x1080是多少dpi)

    分辨率1920x1080是几k(分辨率1920x1080是多少dpi)

  • 普通打印机可以打印发票吗(普通打印机可以打印卡纸吗)

    普通打印机可以打印发票吗(普通打印机可以打印卡纸吗)

  • ipad插卡位置在哪(苹果ipad插卡孔在哪里)

    ipad插卡位置在哪(苹果ipad插卡孔在哪里)

  • 怎样把新版微信降级(怎么把新版本微信换成旧版本)

    怎样把新版微信降级(怎么把新版本微信换成旧版本)

  • 无声鼠标不影响手感吗(无声鼠标容易失灵吗)

    无声鼠标不影响手感吗(无声鼠标容易失灵吗)

  • 手机电话响了屏幕不亮(电话响了屏幕上什么都没有)

    手机电话响了屏幕不亮(电话响了屏幕上什么都没有)

  • 抖音币可以送给好友吗(抖音币可以送给抖音好友吗)

    抖音币可以送给好友吗(抖音币可以送给抖音好友吗)

  • 华为手机耳机往哪里插(华为耳机插上怎么跟外放一样)

    华为手机耳机往哪里插(华为耳机插上怎么跟外放一样)

  • 魅族16T怎么恢复照片(魅族16怎么恢复root)

    魅族16T怎么恢复照片(魅族16怎么恢复root)

  • iphonex可以定时开机吗(iphone x如何定时开关机)

    iphonex可以定时开机吗(iphone x如何定时开关机)

  • 探探怎么隐藏活跃时间(探探怎么隐藏活跃人数)

    探探怎么隐藏活跃时间(探探怎么隐藏活跃人数)

  • 粉笔账号同时可以用吗(粉笔账号可以几个人用)

    粉笔账号同时可以用吗(粉笔账号可以几个人用)

  • 小米9什么时候推送miui11(小米9什么时候可以更新miui13)

    小米9什么时候推送miui11(小米9什么时候可以更新miui13)

  • 抖音文字怎么复制(抖音文字怎么复印)

    抖音文字怎么复制(抖音文字怎么复印)

  • 怎样在手机上订外卖餐(怎样在手机上订火车票)

    怎样在手机上订外卖餐(怎样在手机上订火车票)

  • 小米手机怎么打开蓝牙音频LDAC(小米手机怎么打开定位)

    小米手机怎么打开蓝牙音频LDAC(小米手机怎么打开定位)

  • iphonexr有三维触控嘛(xr有三维触控吗)

    iphonexr有三维触控嘛(xr有三维触控吗)

  • 为什么收不到10086的短信(为什么收不到10086短信信息)

    为什么收不到10086的短信(为什么收不到10086短信信息)

  • 利用linux命令行工具进行文本行过滤的方法(linux命令行怎么用)

    利用linux命令行工具进行文本行过滤的方法(linux命令行怎么用)

  • 委托加工物资增值税纳税义务发生时间
  • 境内单位和个人向境外单位提供服务
  • 核定征收企业股权转让的个人所得税
  • 小汽车折旧年限的最新规定2023
  • 增值税专用发票的三流合一是什么意思
  • 付境外公司佣金怎么做账
  • 分公司的所得税怎么申报
  • 发票弄丢下一步怎么办
  • 计提社保公积金的会计分录
  • 兼营行为税务处理例子
  • 交易性金融资产的交易费用计入哪里
  • 银行的抵债资产是什么
  • 退休返聘工资如何纳税计税
  • 一般纳税人税率2023
  • 购买的商品赠送如何做账
  • 固定资产作为实收资本报废怎么处理
  • 通讯费税前扣除填报怎么填
  • 汇算清缴差旅费扣除标准
  • 年数总和法折旧公式
  • 转销和冲销是什么意思
  • 纳税额和纳税总额
  • 手动设定ip地址后连不上网
  • mac废纸篓彻底删除
  • 人工装卸怎么办营业执照
  • linux中rm命令详解
  • 成本法转为权益法属于会计政策变更吗
  • 增值税发票选择确认平台注意事项
  • linux阅读pdf
  • 年末一般纳税人税率表
  • 第三方代收的款项怎么做账
  • php发送邮件的问题有哪些
  • 企业记账的主要内容包括
  • 制造业成本核算明细表
  • 业务招待费有
  • 什么情况下增长率是0
  • framework7教程
  • 卡格拉河
  • 异地开办分公司流程
  • 权利许可证照印花税优惠政策
  • Vue Element UI 中 el-table 树形数据 tree-props 多层级使用避坑
  • 最多显示2行文字怎么弄
  • 代理业务怎么记账
  • python中拼接
  • dedecms更新
  • 未开票收入增值税申报
  • mysql的备份方式
  • 手机做h5
  • 解决问题对吗
  • java中double是什么数据类型
  • dedecms使用教程
  • 缴纳增值税的营业收入
  • 建筑业委托加工合同范本
  • 银行托管账户的规定有哪些
  • sql server重新配置
  • 企业收到投资款应贷记什么账户
  • 买赠行为的会计处理
  • 融资租入固定资产的改建支出
  • 公司冲账发票做账流程
  • sql server在表里查找具体数据
  • 动态sql中返回数组的值
  • Win7/Win8.1/Win10的UAC对话框“是”点不了的原因及解决方法
  • u盘启动怎么制作 u极速一键制作u盘启动图文教程
  • redhat系列
  • win10预览版选哪个
  • 默认终端地址
  • win7怎么免费升级win11
  • 怎么修改win10登录名
  • linux怎么管理进程
  • centos设置禁ping
  • linux学啥
  • java如何自定义函数
  • 跨域请求的三种方法
  • Tree、Unformat、Vsafe命令的区别与使用说明
  • Javascript call和apply区别及使用方法
  • diskpart ntfs
  • python简要说明读取文件的一般流程
  • 善意取得的条件和效力
  • 房子办不了产权
  • 四川成都离剑门多远
  • 税务约谈的法律依据
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设