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

  • vivo手机一键换机怎么操作(vivo手机一键换机微信聊天记录还有吗)

    vivo手机一键换机怎么操作(vivo手机一键换机微信聊天记录还有吗)

  • 微信头像框怎么设置(微信头像框怎么去掉)

    微信头像框怎么设置(微信头像框怎么去掉)

  • 无法在此ipad上激活触控id(无法在此ipad上激活触控id怎么办)

    无法在此ipad上激活触控id(无法在此ipad上激活触控id怎么办)

  • wifi干扰严重解决办法(wi-fi干扰)

    wifi干扰严重解决办法(wi-fi干扰)

  • 卖天猫积分对淘宝号有没有影响(使用天猫积分卖家可以收到钱吗)

    卖天猫积分对淘宝号有没有影响(使用天猫积分卖家可以收到钱吗)

  • 路由器不放在弱电箱怎么组网(路由器不放在弱电箱)

    路由器不放在弱电箱怎么组网(路由器不放在弱电箱)

  • 稍后尝试设置面容id是什么情况(稍后尝试设置面容是什么意思)

    稍后尝试设置面容id是什么情况(稍后尝试设置面容是什么意思)

  • 华为flaal10是什么型号(华为flaal10什么型号手机)

    华为flaal10是什么型号(华为flaal10什么型号手机)

  • los闪红灯过一会恢复(los红灯一会闪一会不闪)

    los闪红灯过一会恢复(los红灯一会闪一会不闪)

  • 淘宝待发货待收货不显示数量怎么办(淘宝待发货待收怎么退款)

    淘宝待发货待收货不显示数量怎么办(淘宝待发货待收怎么退款)

  • 飞行模式来电有记录吗(飞行模式来电有声音吗)

    飞行模式来电有记录吗(飞行模式来电有声音吗)

  • oppo左上角显示hd什么意思(oppo手机左上角出现hd2是什么意思)

    oppo左上角显示hd什么意思(oppo手机左上角出现hd2是什么意思)

  • 小米路由器拨号失败是怎么回事(小米路由器拨号上网678)

    小米路由器拨号失败是怎么回事(小米路由器拨号上网678)

  • 飞鸽互联验证失败怎么回事(飞鸽互联注册失败是什么原因)

    飞鸽互联验证失败怎么回事(飞鸽互联注册失败是什么原因)

  • 手机被pin码锁了怎么办(手机pin码锁了怎么解锁)

    手机被pin码锁了怎么办(手机pin码锁了怎么解锁)

  • 苹果8plus支持人脸识别吗(苹果8p支持人脸吗)

    苹果8plus支持人脸识别吗(苹果8p支持人脸吗)

  • 苹果手机内存升级(苹果手机内存升级256g多少钱)

    苹果手机内存升级(苹果手机内存升级256g多少钱)

  • 华为荣耀怎么隐藏软件(华为荣耀怎么隐藏应用)

    华为荣耀怎么隐藏软件(华为荣耀怎么隐藏应用)

  • 华为原相机怎么关美颜(华为原相机怎么设置)

    华为原相机怎么关美颜(华为原相机怎么设置)

  • ps如何吸取颜色(ps如何吸取颜色并涂抹)

    ps如何吸取颜色(ps如何吸取颜色并涂抹)

  • 如何恢复ppt文件(ppt怎么恢复之前的文档)

    如何恢复ppt文件(ppt怎么恢复之前的文档)

  • 淘宝怎么设置不使用红包(淘宝怎么设置不自动播放视频)

    淘宝怎么设置不使用红包(淘宝怎么设置不自动播放视频)

  • 怎么注销全民k歌(怎么注销全民K歌)

    怎么注销全民k歌(怎么注销全民K歌)

  • 怎么提高ps清晰度像素(怎么提高ps清晰度)

    怎么提高ps清晰度像素(怎么提高ps清晰度)

  • 青客宝退款审核要多久(青客宝退款审核需要多久)

    青客宝退款审核要多久(青客宝退款审核需要多久)

  • vue3使用svg图标多种方式(vue引用svg矢量图)

    vue3使用svg图标多种方式(vue引用svg矢量图)

  • 运输发票税率6%和3%区别在哪
  • 代收车船税如何计算
  • 纳税额是指
  • 500以下的收据可以入账吗
  • 残疾人保障金零申报怎么填写
  • 所得税季报利润表怎么填
  • 新增土地和新增货值
  • 取得虚开增值税专用发票罪
  • 发生销货退回需要退回发票么
  • 转给个人账户的钱可以追回来了吗?
  • 一年内到期的非流动负债包括哪些科目
  • 以现金形式发工资的说明范文
  • 应收账款贷方余额表示什么
  • 免税的苗木发票抵扣税费怎么算
  • 政策减免是什么意思
  • 个人独资企业是法人吗
  • 接收虚开增值税专用发票要判刑吗
  • 计税收入金额是什么意思
  • 不能远程补报之前的税款所属期
  • 建安官网
  • 公司房租可以抵多少税
  • 以旧换新增值税税率是多少
  • 外协加工费会计分录
  • 免税收入要减去吗
  • 如何开启系统设置
  • php如何实现字符串反转
  • exe都打不开
  • 购进的包装物怎么入库
  • 年末一般纳税人税率表
  • 应付股利的会计科目
  • 债务重组利得计入投资收益还是营业外收入
  • echarts获取不到宽和高
  • kprcycleaner.exe是什么
  • 归属性质
  • 个体户要交哪些税怎么交
  • php imagecopymerge
  • 微信小程序和web端的交互
  • element-ui tree
  • 分期收款企业所得税确认时间
  • linux运行c++程序
  • unplugin-auto-import github
  • 智能优化算法及其MATLAB实例
  • php怎么变成txt
  • 纳税人提供技术开发服务
  • 融资租赁的利息进项税可以抵扣吗
  • 富文本功能
  • python字典遍历key
  • 资产处置费用是指单位经批准处置资产时发生的费用
  • sql with as用法详解
  • 入职体检费用报销发票怎么开
  • 制造费用一定要摊销吗
  • 金税盘分盘可以全额抵扣吗
  • 广告牌制作计入什么科目
  • 投资性房地产公允价值模式转为成本模式
  • 商誉的算法
  • 汇算清缴产生的企业所得税如何做账
  • 小微企业免征增值税优惠
  • 如何给初建单位发邮件
  • solaris 2020
  • mac截图清晰度设置方法
  • windows如何创建工作组
  • 在windows 10
  • mac adobe flash player一直提示更新
  • xp怎么改密码怎么设置
  • win8.1操作界面
  • 怎么禁止电脑qq自动启动
  • win7系统升级win10系统方法
  • element拖拽
  • python supper函数
  • c调用java后又调用回
  • Node.js中的construct
  • python求解析解
  • 原生js实现promise
  • unity3d控制物体移动
  • [置顶]津鱼.我爱你
  • python设计教程
  • 税务安装步骤
  • 豪车超过多少钱要多加税
  • 浙江省个人医保累计自费多少可以报销
  • 哪些情况要交房租
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设