位置: 编程技术 - 正文

浅谈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
  • 企业的开办费
  • 政府机关车辆拍卖
  • 到银行购买结算凭证
  • 未开票收入已缴税额怎么入账
  • 年终零余额账户有余额
  • 收到子公司税后利润
  • 应征消费税的汽车为啥不能抵扣
  • 装修计入固定资产
  • 开餐费发票要开具数量和单价吗
  • 赞助贫困学生的语句
  • 自建自用建筑物,其自建行为不是建筑业税目的征税范围
  • 公司的房产税如何征收
  • 专票入库单金额怎么算
  • Secure Boot什么意思?BIOS中Secure Boot灰色无法更改解决方法详解
  • 社会保险费的征收程序
  • 纳税人哪些支出不用交税
  • win11不显示桌面,但是有文件夹打开的标志是怎么回事
  • 浅谈linux的发展方向和应用范围
  • 栈定义代码
  • win11更新补丁如何删除
  • pytorch模型转tflite
  • php get post
  • 盆栽月季花怎么修剪图解
  • 工业企业成本核算流程
  • 销售货物价格明显偏低且无正当理由
  • 长期借款利息费用的资本化账务处理
  • 布列塔尼岛屿
  • yii框架安装
  • 个人转让土地使用权可以开专票吗
  • vue.js devtools插件下载
  • nginx for linux
  • 什么叫含税和未含税区别
  • 2021年车辆检测
  • 企业坏账准备提取的方法和提取的比例由国家统一规定
  • 代管资金如何做凭证
  • 有趣的 Go HttpClient 超时机制
  • 玩转mongodb4.0从入门到实践
  • 工程开票金额大于结算金额怎么处理
  • 资产负债表的种类
  • 个税申报表中的年金是什么意思?
  • 小规模开票多少成一般纳税人
  • 单位买理财产品怎么买
  • 资产负债表所有者权益排列顺序
  • 三证合一指的是什么意思
  • 跨年发票分录
  • 其他应付为负数什么意思
  • 工程承建方给予什么赔偿
  • 公司购买银行理财产品账务处理
  • 收据能不能入账账户
  • 所得税 补缴
  • 出口退税登记的内容
  • 劳动就业失业金怎么申请
  • mysql ERROR 1044 (42000): Access denied for user ''@'localhost' to database
  • sql server中的权限包括哪三种类型
  • 网站的运维
  • Gene6 FTP在windows 2008上面破解后无法启动解决方法
  • 使用灭火器时要对准火焰的什么部位喷射
  • 如何架设ftp
  • 桌面快捷方式不显示图标怎么办
  • repair.exe是什么软件
  • 软件源推荐
  • linux环境和常用命令
  • mac怎么保存到桌面
  • 千元以内电脑
  • 如何禁用mac内置键盘
  • 微软商店更新错误
  • lua打印变量
  • opengl 缓存
  • javascript函数大全
  • pythonweb框架有哪些
  • 彻底弄懂js中的this指向
  • jqgrid单元格点击事件
  • 检测ip地址命令
  • javascript编程语言
  • unity3d鼠标点击移动
  • javascript中的函数该如何理解
  • python有没有二维数组
  • 国税税控开票系统
  • 餐饮专票可以抵扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设