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

  • 苹果手机拍视频怎么开闪光灯(苹果手机拍视频怎么更清晰)

    苹果手机拍视频怎么开闪光灯(苹果手机拍视频怎么更清晰)

  • 显示器背光亮了没图像(显示器背光亮了没图像怎么回事)

    显示器背光亮了没图像(显示器背光亮了没图像怎么回事)

  • fosc是什么频率(fp是什么频率)

    fosc是什么频率(fp是什么频率)

  • 淘宝对不起系统繁忙请稍后再试怎么办(淘宝出现对不起系统繁忙)

    淘宝对不起系统繁忙请稍后再试怎么办(淘宝出现对不起系统繁忙)

  • 华为mate30pro超级微距怎么打开(华为mate30pro超级微距)

    华为mate30pro超级微距怎么打开(华为mate30pro超级微距)

  • 苹果手机怎么下载视频到手机(苹果手机怎么下一行打字)

    苹果手机怎么下载视频到手机(苹果手机怎么下一行打字)

  • 拆封激活新机是什么意思(拆封已激活全新机)

    拆封激活新机是什么意思(拆封已激活全新机)

  • 抖音极速版下载苹果手机可以下载吗(抖音极速版下载安装下载)

    抖音极速版下载苹果手机可以下载吗(抖音极速版下载安装下载)

  • word怎么让文字竖着(word怎么让文字占满整个页面)

    word怎么让文字竖着(word怎么让文字占满整个页面)

  • 小米盒子不能进去应用商店怎么办(小米盒子不能进入主界面怎么办)

    小米盒子不能进去应用商店怎么办(小米盒子不能进入主界面怎么办)

  • 京东怎么申请必购码(京东申请条件)

    京东怎么申请必购码(京东申请条件)

  • 手机上拼多多哪里备注(手机上拼多多哪领抽纸)

    手机上拼多多哪里备注(手机上拼多多哪领抽纸)

  • 旺旺禁言半年怎么搞(旺旺禁言半年怎么解封)

    旺旺禁言半年怎么搞(旺旺禁言半年怎么解封)

  • 怎么注册脸书(怎么注册脸书邮箱)

    怎么注册脸书(怎么注册脸书邮箱)

  • 木马病毒怎么清除(木马病毒怎么清除手机)

    木马病毒怎么清除(木马病毒怎么清除手机)

  • 微信读书在哪(微信读书在哪里买书)

    微信读书在哪(微信读书在哪里买书)

  • 飞行模式提示是关机吗(飞行模式已开启)

    飞行模式提示是关机吗(飞行模式已开启)

  • 抖音如何取关(抖音如何取关注销账号呢)

    抖音如何取关(抖音如何取关注销账号呢)

  • 抖音卸载后对方知道吗(抖音卸载后对方能看到什么)

    抖音卸载后对方知道吗(抖音卸载后对方能看到什么)

  • 小度的功能(小度的功能与使用方法视频)

    小度的功能(小度的功能与使用方法视频)

  • 【node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 最全面有效的解决方案】(无法将node项识别为)

    【node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 最全面有效的解决方案】(无法将node项识别为)

  • CLIP(Contrastive Language-Image Pre-Training)简介

    CLIP(Contrastive Language-Image Pre-Training)简介

  • 让她/他心动的告白,页面制作(9个页面+链接+代码,原生HTML+CSS+JS实现)(你让他心动他让你心安)

    让她/他心动的告白,页面制作(9个页面+链接+代码,原生HTML+CSS+JS实现)(你让他心动他让你心安)

  • 群智能优化计算中的混沌映射(智能优化算法可以用到哪里)

    群智能优化计算中的混沌映射(智能优化算法可以用到哪里)

  • 如何确定固定资产的计税基础
  • 土地入固定资产还是无形资产
  • 残保金申报在哪申报
  • 返佣账务处理
  • 个人所得税能否跨年度
  • 企业所得税的应纳税所得额的扣除项目有哪些
  • 资源税代扣代缴怎么操作
  • 企业发生的间接生产费用应
  • 你如何界定成本与费用之间区别?
  • 个人开增值税普票有没有限额
  • 固定资产简易办法3%减按2%
  • 请问什么是全员安全生产责任制
  • 季节性停工算作固定资产停止使用吗?
  • 预缴的个人所得税会计分录
  • 卖废品收入没开票怎么办
  • 非居民企业提供劳务企业所得税
  • 三个点的专票要交多少税
  • 涉税票据如何避免税务风险?
  • 进项抵扣怎么做分录
  • 老板垫付的货款怎么做凭证?
  • 个人所得税申请免税条件
  • 取得进账发票没发票
  • 天猫公司不开银行卡吗
  • 组成计税价格用来算什么
  • mac auto tune
  • 财务收入怎么写
  • 非正常损失运输费进项税额如何转出
  • 摊余成本计量的金融资产账面价值
  • 苹果手机连接电脑
  • codelite教程
  • 生产成本分配表模板
  • 低值易耗品现在还用吗
  • 纳税人代扣代缴
  • 达拉斯位置
  • 鸟瞰画面
  • php设置中文
  • 微信小程序游戏手游排行榜
  • 【小沐学C++】C++ MFC中嵌入web网页控件(WebBrowser、WebView2、CEF3)
  • 公司投资一家公司然后再投资
  • vue vscode snippets
  • 多线程的弊端
  • 购物车html模板
  • 长期股权投资初始计量会计科目
  • 养老保险进账金额
  • 开票金额应该含增值税吗
  • python的用途
  • mongodb win7
  • sql server2003
  • 股权变更如何交税
  • 应交税费会计分录完整版
  • 原材料专票入库怎么入账
  • 没收租赁保证金要交增值税么
  • 房地产企业收到政府补助
  • 投资和注册资本
  • 个人为什么不能购买永续债
  • 金税盘维护费抵减分录
  • 企业和职工之间的财务关系属于
  • 会计账簿有哪些格式
  • 成本会计主要做什么工作
  • myeclipse连接mysql要装软件吗
  • windows8休眠如何唤醒
  • win7访问共享文件
  • win7系统IE浏览器打开跳转到360浏览器,怎么阻止
  • win7系统桌面图标有遮挡
  • windows102021年更新
  • cocoscreator分包
  • tensorflow.nn
  • 详解JavaScript ES6中的Generator
  • jquery自定义插件
  • 用python写脚本
  • js怎么设置图片大小
  • 报价单盖什么公章
  • 豪车超过多少钱要多加税
  • 湖南省税务局发票辨伪系统
  • 广西税务12366怎么查询发票
  • 新能源车异地购车
  • 纳税服务存在的不足之处
  • 贵阳地铁报销凭证
  • 税务之星ii驱动
  • 江西省抚州市黎川县洵口镇
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设