位置: 编程技术 - 正文

浅谈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使用)

  • 递延所得税负债账务处理
  • 所得税费用包括递延所得税吗
  • 农民工专户个税起征点2023四川省
  • 卷烟批发环节消费税纳税义务发生时间
  • 已经抵扣的发票还能红冲吗?怎么操作
  • 什么叫调表不调帐
  • 出口业务退税流程资料
  • 会计集中核算模式
  • 多计提公积金怎么办理
  • 企业年金个人所得税扣除标准
  • 企业委托银行收款,银行以办妥手续,而企业尚未收到凭证
  • 土地投资入股交什么税
  • 子公司注销欠母公司借款怎么办
  • 境内企业转让境外股权税收
  • 建筑企业如何才能上市
  • 个税申报状态失败
  • 现金折扣税务会计
  • 中标费用由哪方出
  • 转让长期股权投资怎么算
  • 季度收入超过30万但开票只有10万
  • 经营租赁中出租人发生的初始直接费用是指
  • 税局代开专票季度未达起征点怎么缴纳地税?
  • 超标的业务招待费属于什么差异
  • 如何做好系统备案工作
  • 如何在电脑管家下载软件
  • vue中使用v-for指令时 为什么要加 key解释正确的是
  • php的认识
  • 个人所得税手续费返还
  • 固定资产计提折旧的原则
  • 年底会计结账
  • .exe是什么软件
  • 2020香港回归23年
  • php+mysql+apache
  • wordpress添加css
  • 法恩达尔的信
  • 【创作赢红包】ChatGPT引爆全网引发的AI算力思考
  • 详解php归并排序数据
  • 用友u8反结账反记账的操作步骤
  • 盈余公积金的账务处理
  • 以物易物对企业有什么好处
  • 公账发工资如何开票
  • 邀请客户参加会议
  • centos7.1
  • 公司购入车辆的增值税怎么算
  • 本月损益类未结转为零的一级科目6603
  • sql按分隔符截取
  • 中级会计职称与中级会计师的区别
  • 研发人员工资是实发还是应发
  • 按揭房办理抵押贷款
  • 工作失误扣工资的规定是什么
  • 土地前期开发费用属于开发成本吗
  • 被法院扣的钱怎么又退回来了
  • 关于小微企业免征印花税的规定
  • 现金零星金额多少
  • 缴纳社保记账凭证怎么开
  • 要交多少税收跟什么有关
  • 环保局罚款记什么科目
  • 会计记账中借方和贷方
  • sql忽略null
  • MySQL索引背后的数据结构及算法原理
  • 安卓设备连接苹果设备
  • CentOS ip_conntrack: table full, dropping packet 的解决方法
  • SwiftBTN.exe - SwiftBTN是什么进程 有啥作用
  • cfg是什么格式,怎么打开
  • hpg是什么软件打开
  • linux滚动更新是什么
  • opengl编译
  • Node.js中的construct
  • css颜色值正确的表达形式
  • jQuery progressbar通过Ajax请求实现后台进度实时功能
  • 设计模式具有的优点
  • unity已存在
  • javascript data
  • Python for Informatics 第11章 正则表达式(一)
  • python 获取uuid
  • 安卓 存储权限 访问的地方是哪里
  • 发票查验结果不一致的原因有哪些
  • 上海二手房个税退税政策
  • 安徽省税务局发票真伪查询平台
  • 加强监督管理工作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设