位置: 编程技术 - 正文

浅析Python中yield关键词的作用与用法(pythonyield理解与用法)

编辑:rootadmin

推荐整理分享浅析Python中yield关键词的作用与用法(pythonyield理解与用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python yieid,yied python,pythonyield理解与用法,python yieid,python3 yield用法,pythonyield详解,python yieid,python yieid,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

为了理解yield是什么,首先要明白生成器(generator)是什么,在讲生成器之前先说说迭代器(iterator),当创建一个列表(list)时,你可以逐个的读取每一项,这就叫做迭代(iteration)。

mylist 是一个可迭代的对象。当使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代的对象:

可以使用“for··· in ··· ”来操作可迭代对象,如:list,string,files,这些迭代对象非常方便我们使用,因为你可以按照你的意愿进行重复的读取。但是你不得不预先存储所有的元素在内存中,那些对象里有很多元素时,并不是每一项都对你有用。

浅析Python中yield关键词的作用与用法(pythonyield理解与用法)

生成器同样是可迭代对象,但是你只能读取一次,因为它并没有把所有值存放内存中,它动态的生成值:

看起来除了把 [] 换成 () 外没什么不同。但是,你不可以再次使用 for i in mygenerator , 因为生成器只能被迭代一次:先计算出0,然后继续计算1,然后计算4,一个跟一个…

yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器。

这个示例本身没什么意义,但是它很清晰地说明函数将返回一组仅能读一次的值,要想掌握yield,首先必须理解的是:当你调用生成器函数的时候,如上例中的createGenerator() ,程序并不会执行函数体内的代码,它仅仅只是返回生成器对象,这种方式颇为微妙。函数体内的代码只有直到每次循环迭代(for)生成器的时候才会运行。

第一次迭代中你的函数会执行,从开始到达 yield 关键字,然后返回 yield 后的值作为第一次迭代的返回值. 然后,每次执行这个函数都会继续执行你在函数内部定义的那个循环的下一次,再返回那个值,直到没有可以返回的。

如果生成器内部没有定义 yield 关键字,那么这个生成器被认为成空的。这种情况可能因为是循环进行没了,或者是没有满足 if/else 条件。

总结

标签: pythonyield理解与用法

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

上一篇:Python中 Lambda表达式全面解析(python lambda的用法)

下一篇:简单谈谈Python中的闭包(python的iloc)

  • 企业所得税如何申报操作
  • 购进固定资产的安装费计入原值吗?
  • 企业所得税低于多少不用交
  • 发票抬头类型怎么选 个人不能报销吗
  • 当月已抵扣的专用发票能作废吗
  • 装修辅材行业辅材现状
  • 上级工会返还的经费记什么收入
  • 年末发票
  • 我公司开给对方13个点发票,后期我公司怎么抵税
  • 外贸 内销
  • 企业预缴所得税
  • 税收六项减免
  • 内销选择性征收关税政策试点
  • 2021年电子税务局印花税怎么申报
  • 年初未分配利润在借方表示什么
  • 可以税前扣除的收据有哪些
  • 对公提回贷算收入吗
  • 工资计提金额
  • 工伤补偿需要缴税吗
  • 新版edge浏览器历史记录
  • 期末调汇凭证怎么调
  • vue slot标签
  • 年底所得税账务处理
  • 赔偿金和违约金有什么区别
  • 会计不忙
  • vue如何预加载图片
  • vue onblur
  • 韦罗尼卡
  • 联表更新数据
  • 资产负债表中其他综合收益怎么填
  • 科技型中小企业享受优惠税收政策
  • 怎么开通公众号微信公众平台
  • 细说php
  • php获取字符串位置
  • 小企业如何记账
  • thinkPHP中_initialize方法实例分析
  • 基于MATLAB的车牌识别
  • 银行承兑是什么意思
  • 发票 技术服务
  • 收取的水电费怎么入账
  • 加工票可以抵扣吗
  • php运行乱码怎么办
  • 累计折旧在资产负债表中填在哪里
  • 认缴怎么填
  • 劳务派遣合法吗
  • SQL设置外键
  • mysql delete limit 使用方法详解
  • 其他应收款科目核算哪些业务
  • 工资标准表
  • 房地产项目完工清算报告
  • 收到社保局的生育津贴并付给职工如何入账
  • 微众银行的企业贷款好批吗
  • 500万以下设备一次性扣除
  • 其他应收款押金的现金流量
  • 借贷不平衡是什么意思
  • 超市的商品品种繁多琳琅满目
  • 预付账款属于资产类科目
  • 海关进口代理公司名称
  • XP IIS5.1 + PHP 5.2.1 + MySQL 5.0.37 + Zend 3.2.6 + phpMyAdmin-2.10.0.2环境配置
  • lowleverfatal error怎么解决
  • linux getuid
  • 使用自带DISM工具修复Windows8.1映像
  • nodejs formidable
  • 浅谈自己对教育的理解
  • selenium csdn
  • unity公路制作
  • java.基础
  • bat批处理如何添加参数运行
  • jquery示例
  • python sco
  • python编程简单案例
  • 增值税普通电子发票有什么用
  • 天津市国税局网站
  • 企业所得税计算器在线计算
  • 全电发票
  • 阜阳市税务局地址
  • 五险一金不满一年可以领失业金吗
  • 钟楼在西安的哪里
  • 审计如何配合教师工作
  • 代理记账公司有什么风险吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设