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

  • 佳能5d相机价目表(佳能5dx)(佳能5d单反多少钱)

    佳能5d相机价目表(佳能5dx)(佳能5d单反多少钱)

  • 自己发起的群收款自己能付款吗(自己发起的群收款包括自己吗)

    自己发起的群收款自己能付款吗(自己发起的群收款包括自己吗)

  • 小米10S的超广角是多少度的(小米10s超广角模糊)

    小米10S的超广角是多少度的(小米10s超广角模糊)

  • 红米k40有nfc吗(redmi k40有nfc)

    红米k40有nfc吗(redmi k40有nfc)

  • 小米手机怎么下载来电铃声(小米手机怎么下载微信)

    小米手机怎么下载来电铃声(小米手机怎么下载微信)

  • 华为长按空白处没反应(华为长按空白处没有设置)

    华为长按空白处没反应(华为长按空白处没有设置)

  • 淘宝试用怎么能申请成功(淘宝试用从哪里进入)

    淘宝试用怎么能申请成功(淘宝试用从哪里进入)

  • 网络无法访问互联网怎么办(如何访问外网)

    网络无法访问互联网怎么办(如何访问外网)

  • mac更新系统要多久(mac系统更新需要多久)

    mac更新系统要多久(mac系统更新需要多久)

  • 苹果几代是双卡双待(苹果12是双卡吗)

    苹果几代是双卡双待(苹果12是双卡吗)

  • 手机自动播放语音怎么回事(手机自动播放语音找不到软件)

    手机自动播放语音怎么回事(手机自动播放语音找不到软件)

  • 苹果x几个卡槽(苹果14pro只有一个卡槽吗)

    苹果x几个卡槽(苹果14pro只有一个卡槽吗)

  • 手机屏幕被按出波纹了要紧吗(手机屏幕被按出白点)

    手机屏幕被按出波纹了要紧吗(手机屏幕被按出白点)

  • 苹果强制关机怎么弄(苹果强制关机怎么弄屏幕失灵)

    苹果强制关机怎么弄(苹果强制关机怎么弄屏幕失灵)

  • 万能钥匙能打开所有的无线网吗(万能钥匙能打开所有的门吗)

    万能钥匙能打开所有的无线网吗(万能钥匙能打开所有的门吗)

  • su卡顿怎么解决(su卡顿怎么解决显卡)

    su卡顿怎么解决(su卡顿怎么解决显卡)

  • 抖音号能查出手机号码吗(抖音号能查出手机号吗?)

    抖音号能查出手机号码吗(抖音号能查出手机号吗?)

  • 苹果下载太慢怎么回事(苹果下载太慢怎么加速)

    苹果下载太慢怎么回事(苹果下载太慢怎么加速)

  • word文档只读不能修改(word只读不能编辑怎么办)

    word文档只读不能修改(word只读不能编辑怎么办)

  • vivo手机怎么遥控空调(vivo手机怎么遥控开空调)

    vivo手机怎么遥控空调(vivo手机怎么遥控开空调)

  • 红米note8pro怎么开通mipay(红米note8pro怎么录屏幕)

    红米note8pro怎么开通mipay(红米note8pro怎么录屏幕)

  • 一加7T怎么开启面部解锁(一加7t怎么开启地震预警)

    一加7T怎么开启面部解锁(一加7t怎么开启地震预警)

  • 铅酸电池有记忆效应吗(铅酸电池有记忆性吗)

    铅酸电池有记忆效应吗(铅酸电池有记忆性吗)

  • 转转收到的钱在哪里(转转收到的钱会转到哪里)

    转转收到的钱在哪里(转转收到的钱会转到哪里)

  • 怎么解除抖音拉黑的人(怎么解除抖音拉黑人)

    怎么解除抖音拉黑的人(怎么解除抖音拉黑人)

  • ios12siri失灵解决办法(iphone12siri怎么没有反馈声音了)

    ios12siri失灵解决办法(iphone12siri怎么没有反馈声音了)

  • CommonJS的理解(commonjs的特点)

    CommonJS的理解(commonjs的特点)

  • 房地产销售商品房税率
  • 个体户能开增值税普通发票给单位吗?
  • 税控盘没有清卡,反写怎么办
  • 怎么算印花税计算器
  • 个税手续费返还比例
  • 工资绩效被扣除怎么办
  • 交通运输企业车辆折旧能加速扣除
  • 分公司独立核算企业所得税缴纳
  • 企业清算业务程序
  • 企业合并有几种
  • 已发货未收款怎么做会计分录
  • 车量购置税申报流程是什么样的?
  • 税控服务费全额抵税分录怎么写
  • 材料短缺赔偿会计分录怎么写?
  • 降库存的方案
  • 运输业增值税专用发票开具要求
  • 如何网上认证发票流程
  • 空调安装费税率是6%
  • 中国增值税发展史
  • 营改增通知规定的税收优惠政策
  • 物业公司代收暖气费如何开票
  • 红字发票勾选平台里有吗
  • 生产工具计入什么费用
  • 税率16降到13什么时候实施
  • 确认国债利息收入的依据
  • 跨年销项税红字发票会计处理?
  • 电脑c盘变红了怎么回事
  • 怎么检查windows版本
  • 员工因违反公司规章制度被辞退有补偿吗
  • 运杂费计入什么科目
  • thinkphp6调用模型的方法
  • WIN11输入法怎么隐藏到任务栏
  • 谷歌浏览器历史记录插件
  • 超期未认证的发票怎么处理
  • 建设期需要流动资金吗
  • 计提工会经费会计账务处理
  • 办公室买花卉怎么做分录
  • 个人所得税的现状分析
  • 时间序列模型ARIMA的优缺点
  • php数据统计源码
  • php手机验证码验证
  • 应付职工薪酬如何记账
  • 以股权抵债的会计分录
  • 浏览器任意链接在哪里
  • 增值税发票过了两个月怎么作废
  • sql server操作教程
  • 收到自然人税务申报短信
  • 差额征收的会计分录
  • 以前年度损益调整在利润表中怎么填
  • 股利分配是什么科目
  • 空调维修保养方案
  • 增值税普通发票查询真伪
  • 工程违约金账务处理规定
  • 非贸付汇计税基础
  • 非流动资产增加意味什么
  • 本月增加的固定资产本月可以进行部门转移
  • 稽查人员是干嘛的
  • 医院财务核算制度
  • 会计基础知识归纳大全
  • 产品成本核算的原则是
  • 债务人以低于债务账面价值的现金清偿某项债务
  • sysbench内存性能测试
  • win8.1电脑设置在哪里
  • 如何快速卸载游戏
  • supporter5.exe - supporter5是什么进程
  • windows常用操作
  • win7系统无法开机解决方法
  • win7系统谷歌浏览器打不开网页
  • win8 开始
  • unity点击播放声音
  • javascript definitive guide
  • 仿百度首页html代码静态
  • bootstrap基础教程pdf
  • python中的open
  • 自定义view ondraw
  • 吉林省国税税务总局官网
  • 房产税的计税依据与税率分别是什么
  • 南京国税局长是谁
  • 社保信息怎么补全
  • 中国的消费税率是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设