位置: 编程技术 - 正文

浅谈Python生成器generator之next和send的运行流程(详解)(python3 生成器)

编辑:rootadmin

推荐整理分享浅谈Python生成器generator之next和send的运行流程(详解)(python3 生成器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python 生成器原理,python生成器有什么用,python生成器有几种写法,python3 生成器,python生成器有几种写法,python生成器详解,python生成器详解,python3 生成器,内容如对您有帮助,希望把文章链接给更多的朋友!

对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数。

然后第二个next调用,进入生成器函数后,从yield语句的下一句语句(第5行)开始执行,然后重新运行到yield语句,执行后,跳出生成器函数,后面再次调用next,依次类推。

下面是一个列子:

了解了next()如何让包含yield的函数执行后,我们再来看另外一个非常重要的函数send(msg)。其实next()和send()在一定意义上作用是相似的,区别是send()可以传递yield表达式的值进去,而next()不能传递特定的值,只能传递None进去。因此,我们可以看做c.next() 和 c.send(None) 作用是一样的。

浅谈Python生成器generator之next和send的运行流程(详解)(python3 生成器)

需要提醒的是,第一次调用时,请使用next()语句或是send(None),不能使用send发送一个非None的值,否则会出错的,因为没有Python yield语句来接收这个值。

下面来着重说明下send执行的顺序。当第一次send(None)(对应行)时,启动生成器,从生成器函数的第一行代码开始执行,直到第一次执行完yield(对应第4行)后,跳出生成器函数。这个过程中,n1一直没有定义。

下面运行到send(1)时,进入生成器函数,注意这里与调用next的不同。这里是从第4行开始执行,把1赋值给n1,但是并不执行yield部分。下面继续从yield的下一语句继续执行,然后重新运行到yield语句,执行后,跳出生成器函数。

即send和next相比,只是开始多了一次赋值的动作,其他运行流程是相同的。

运行结果:

以上这篇浅谈Python生成器generator之next和send的运行流程(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

利用Celery实现Django博客PV统计功能详解 前言前几天给网站的文章增加了pv统计,之前只有uv统计。之前没加pv统计是觉得每个用户每访问一次文章,我都需要做一次数据库写操作实在是有损性

Python实现SSH远程登陆,并执行命令的方法(分享) 在自动化测试过程中,比较常用的操作就是对远程主机进行操作,如何操作呢?使用SSH远程登陆到主机,然后执行相应的command即可。使用Python来实现这

Python实现Windows和Linux之间互相传输文件(文件夹)的方法 项目中需要从Windows系统传输ISO文件到Linux测试系统,然后再Linux测试系统里安装这个ISO文件。所以就需要实现如何把文件从Windows系统传输到Linux系统中。

标签: python3 生成器

本文链接地址:https://www.jiuchutong.com/biancheng/375629.html 转载请保留说明!

上一篇:python生成式的send()方法(详解)(python生成器有几种写法)

下一篇:利用Celery实现Django博客PV统计功能详解(celery使用)

  • 费改税是哪一年
  • 建筑服务增值税税率
  • 购进货物用于建造厂房可以抵扣增值税吗
  • 展位费怎么入账
  • 报关时电子口岸电子委托应该什么时候做
  • 会计学中管理费用属于什么
  • 扣缴个人所得税报告表
  • 暂估应付账款借方余额
  • 初始数据试算表不平衡的原因
  • 朋友挂靠公司社保
  • 商品过期可以向商家索要赔偿吗
  • 存货在财务报表中存在的财务操纵
  • 固定资产评估费计入什么会计科目
  • 以前年度损益调整贷方余额表示什么
  • 公司买的食用油会计分录
  • 财务费用在汇算清缴时填哪里科目
  • 即征即退进项税额分摊方法
  • 支付工程款不得超60天
  • 股权无偿赠与子女怎么办理手续
  • 成品油生产企业身份归类管理办法
  • 收到财政奖励扶持资金账务处理?
  • 研发成功的产品卖出去怎么做账
  • 笔记本电脑应该关机还是睡眠
  • vue做移动端适配最佳解决方案,亲测有效
  • 招待费的范畴
  • PHP:mcrypt_enc_get_block_size()的用法_Mcrypt函数
  • 融资性售后回租的账务处理
  • 小规模纳税人查询
  • 违反发票管理的处罚
  • 准公益性企业
  • 印克斯湖国家公园中的德克萨斯矢车菊,德克萨斯州 (© Inge Johnsson/Alamy)
  • 【深度学习】目标检测的性能评价指标,mAP_0.5,mAP_0.5,0.95,0.05
  • 股东以固定资产入股会计处理
  • chat gpt 国内版免费手机
  • 数据挖掘期末考试大纲
  • python优化工具箱
  • php zmq
  • 文件不知道在哪怎么找
  • 钱进公账怎么转账给别人
  • 外包食堂可以开专票吗
  • 质保金如果以后可以退吗
  • 残疾人就业保障金申报时间
  • 数据库管理中负责数据模式定义的数据库语言是
  • 怎么防止?
  • 投标报名费开票编码
  • 企业利润分配的含义
  • 企业银行贷款报表模板
  • 什么情况下需要异地预缴增值税
  • 春节重要通知发放工资
  • 五险一金缴纳比例2023
  • 房产契税新政策2023
  • 服装厂布料都是在哪里进的
  • 招标公司的成本控制
  • 材料采购的流程
  • 企业给职工发放的自产产品应作为职工福利费管理
  • 以前年度多计提的税金怎么调整
  • 值得收藏的一元硬币
  • mysql中存储引擎
  • linux网络管理及应用
  • linux中使用grep命令显示包含特殊字符的行
  • winxp修改ip地址方法
  • ubuntu系统自带的截图工具
  • centos7软件安装
  • 查找返回一行数据
  • linux系统设置网络
  • Metaio in Unity3d 教程--- 二. 创建自己的Application
  • 在dos中文件是以什么目录结构
  • javascript例题
  • js class属性
  • pull order
  • javascript题
  • mac怎么编写python
  • JavaScript中setFullYear()方法的使用详解
  • jQuery ready()和onload的加载耗时分析
  • javascript程序设计教程
  • 关于学习的名言
  • 离线开票金额为0
  • 国税系统升级后怎么添加办税人
  • 2022年最新最全执业药师继续教育考试答案
  • 西北地区的沙尘暴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设