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

  • 支付宝盲盒单个要多少卡片(支付宝盲盒单个要多少兑)

    支付宝盲盒单个要多少卡片(支付宝盲盒单个要多少兑)

  • 醒图的用户头像怎么改(醒图的logo图片)

    醒图的用户头像怎么改(醒图的logo图片)

  • 手机屏幕边缘显示不全(手机屏幕边缘显示不全vivo)

    手机屏幕边缘显示不全(手机屏幕边缘显示不全vivo)

  • ipad上微信找不到注册(ipad微信)

    ipad上微信找不到注册(ipad微信)

  • arpanet属于第几代网络(arp是哪一层)

    arpanet属于第几代网络(arp是哪一层)

  • 腾讯课堂多久生成回放(腾讯课堂多久生成课件)

    腾讯课堂多久生成回放(腾讯课堂多久生成课件)

  • 编码器的作用(旋转编码器的作用)

    编码器的作用(旋转编码器的作用)

  • 什么软件可以提取视频里的音乐(什么软件可以提取音乐)

    什么软件可以提取视频里的音乐(什么软件可以提取音乐)

  • 华为nova5z屏幕材质(华为nova5屏幕材质)

    华为nova5z屏幕材质(华为nova5屏幕材质)

  • tcp首部最少多少字节(tcp首部至少有多少节)

    tcp首部最少多少字节(tcp首部至少有多少节)

  • 微博将对方拉黑会怎样(微博将对方拉黑 对方知道吗)

    微博将对方拉黑会怎样(微博将对方拉黑 对方知道吗)

  • 快手个人主页的联系电话怎么设置(快手个人主页的背景怎么设置)

    快手个人主页的联系电话怎么设置(快手个人主页的背景怎么设置)

  • 小米手环4睡眠监测怎么开(小米手环4睡眠监测设置方法)

    小米手环4睡眠监测怎么开(小米手环4睡眠监测设置方法)

  • 淘宝绑定身份证怎么改(淘宝绑定身份证怎么解绑)

    淘宝绑定身份证怎么改(淘宝绑定身份证怎么解绑)

  • 拼单2人成功是都给发吗(拼单成功要几个人)

    拼单2人成功是都给发吗(拼单成功要几个人)

  • 苹果7可以无线充电吗(苹果手机为什么打不开无线网络)

    苹果7可以无线充电吗(苹果手机为什么打不开无线网络)

  • 计算机系统是指(计算机系统主要指什么)

    计算机系统是指(计算机系统主要指什么)

  • zao换脸怎么去水印(换脸怎么p)

    zao换脸怎么去水印(换脸怎么p)

  • 图面路况播报是什么意思(图面路况播报是什么)

    图面路况播报是什么意思(图面路况播报是什么)

  • vivo每天屏幕使用时间(vivo设置屏幕使用时间长)

    vivo每天屏幕使用时间(vivo设置屏幕使用时间长)

  • qq空间怎么锁(QQ空间怎么锁评论)

    qq空间怎么锁(QQ空间怎么锁评论)

  • 苹果原彩显示在哪里(苹果原彩显示功能)

    苹果原彩显示在哪里(苹果原彩显示功能)

  • Vue实战【后端返回文件流时,前端如何处理并成功下载流文件】(vue的后端)

    Vue实战【后端返回文件流时,前端如何处理并成功下载流文件】(vue的后端)

  • pushd命令  添加目录到目录堆栈顶部(push添加对象)

    pushd命令 添加目录到目录堆栈顶部(push添加对象)

  • 微信小程序实现顶部固定底部分页滚动效果(微信小程序实现支付功能)

    微信小程序实现顶部固定底部分页滚动效果(微信小程序实现支付功能)

  • 经营租赁增值税税率3%
  • 经营租赁的税务编码是什么
  • 固定资产税前一次性扣除
  • 新个税法申报的税种
  • 个人出租房屋需要办理什么手续
  • 当月销售次月开票怎么申报
  • 合伙企业需要申报个税吗
  • 销售收入的暂估入账是否结转利润
  • 货运代理公司会计涉及的科目
  • 通行费抵扣入账会计分录?
  • 公司购入长期债务怎么算
  • 企业如何运用内部招募
  • 工薪个人所得税扣除
  • 企业自行去税务开具房租发票税款怎么做?
  • 税务机构
  • 个人所得税合并申报
  • 固定资产折旧怎么做记账凭证
  • win10 5月更新已知bug
  • 公务接待和商务接待自查
  • 多交的附加税怎么做账
  • Win11 Build 22454.1000 开发者预览版发布(附更新修改已知问题+安装)
  • php数组函数输出《咏雪》里有多少"片"字
  • 苹果mac怎么删除照片
  • 高校教材pdf
  • 请问酒厂销售酒怎么样?
  • 存货跌价准备的分录
  • 融资租赁会计处理流程
  • 材料成本差异怎么结转
  • 存货跌价准备的转销会计分录
  • 基于专业性的家校双向互动,需要家长的学校教育参与
  • 并发操作的定义
  • 红冲上年度收入怎么做凭证
  • apr命令怎么用
  • 固定资产清理属于非流动资产吗
  • 事业单位用其他资金用于还单位贷款违法吗
  • 小规模纳税人跨区域预缴增值税
  • 当期进项加计额怎么填
  • 中药和中药饮片有区别吗
  • 汽车租赁属于经营租赁吗
  • 银行汇票用什么会计分录
  • 低值易耗品指的价格
  • ETC通行费发票抵扣2021新规定
  • 分期收款发出商品是什么意思
  • 结构性存款现金流量折现法
  • 零售药店过期药品整改报告
  • 残保金申报可以随便填吗
  • 根据银行流水如何计算成本
  • 外币折算差额怎么计算
  • 旅游费计入什么会计科目
  • 二手市场机械设备
  • 公司提供给员工暂借款未还款离职
  • 企业会计准则中职工薪酬
  • 办公用品怎么开大额发票
  • 建账需要准备什么东西
  • 计提折旧对公司有什么好处
  • 什么是现金等价物列举
  • rhel安装mysql
  • fedora linux安装教程
  • win8 怎么样
  • linux pb
  • /wlan direct
  • win10苹果版
  • linux系统中用户可以分为三种
  • windows 隐藏软件
  • linux中的awk命令详解
  • window7窗口
  • win10 edge浏览器设置信任站点
  • 打开win七
  • linux记录操作记录
  • 关于加载失败壁纸
  • unity多人语音
  • linux中sudo命令的使用方式和作用
  • putty自动登录脚本
  • jQuery+JSON实现AJAX二级联动实例分析
  • jquery插件开发方法
  • 如何获取电子户口簿
  • 税务八项规定日期怎么写
  • 国家税务总局办税指南
  • 购买的土地没有土地使用证
  • 地税怎么查个人所得税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设