当前位置: 首页 > news >正文

深入理解 Python 中的 yield 关键字

在 Python 编程中,yield是一个关键而强大的语言特性,它使得函数能够以“惰性求值”和“状态保持”的方式逐步返回多个值。与普通函数通过return一次性返回结果不同,包含yield的函数被称为生成器函数,其调用结果是一个生成器对象。本文将系统地介绍yield的工作原理、使用方法、优势以及典型应用场景。

什么是生成器函数?

只要一个函数体中包含至少一个yield表达式,该函数就成为生成器函数。调用生成器函数不会立即执行函数体,而是返回一个生成器对象:

defsimple_gen():yield1yield2yield3gen=simple_gen()# 此时函数并未执行

只有在对该生成器对象进行迭代(例如调用next(gen)或放入for循环)时,函数才会开始执行,并在遇到yield时暂停,返回yield后的值,同时保存当前的执行状态(包括局部变量、指令指针等)。下一次迭代时,函数从上次暂停的位置继续执行。

print(next(gen))# 输出: 1print(next(gen))# 输出: 2print(next(gen))# 输出: 3# 再次调用 next(gen) 将抛出 StopIteration 异常

值得注意的是,生成器函数不一定需要包含循环。虽然许多实际应用中会使用循环来多次触发yield,但即使没有循环,只要存在yield,函数就是生成器。

yield 与 return 的本质区别

  • return:函数执行到return后立即终止,释放所有局部状态,只能返回一次。
  • yield:函数在yield处暂停,保留所有状态,下次调用时从中断处继续,可多次产出值。

这种“暂停-恢复”机制使生成器天然具备状态机的特性,非常适合处理需要分步计算或流式输出的场景。

内存效率:为何选择生成器?

生成器的核心优势在于按需生成数据,避免一次性将大量数据加载到内存中。

对比以下两种方式生成一百万个整数:

# 列表推导式:立即创建完整列表,占用大量内存numbers=[iforiin
http://www.jsqmd.com/news/358735/

相关文章:

  • 用过才敢说 9个AI论文网站深度测评!专科生毕业论文写作必备工具推荐
  • 无锡黑锋 HF6012 PWM/PFM控制DC-DC降压稳压器技术解析
  • 设置同步,webdav和增量更新
  • nt!PiQueryResourceRequirements函数分析写入注册表LOGCONF下的BasicConfigVector和赋值DeviceNode->ResourceRequirements
  • 六零导航页2.1版本最新修复完美版本
  • FastAPI 概述
  • Python 多进程返回值处理
  • 2026最新!AI论文写作软件 千笔AI VS 锐智 AI,自考写作者必备!
  • 学习2.8
  • 整理这份人脸识别门禁考勤机的设备清单,并补充一些技术细节和选型建议:
  • 重庆本地人私藏!解放碑35年老手艺火锅,甘九妹才是烟火本味 - 速递信息
  • 干货来了:专科生必备的降AI率软件 —— 千笔·降AIGC助手
  • 编写合同审核助手,上传合同文本,自动识别合同中的风险点,(如霸王条款,模糊条款),给出修改建议,生成合同审核报告,避免合同纠纷,适合职场人。
  • 微信小程序制作一个需要多少钱 - 码云数智
  • Linux内核驱动——设备树原理与应用
  • 微信小程序商城怎么开通,小程序商城制作平台对比 - 码云数智
  • # 云南茶叶数据分析系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 小程序商城平台哪家强?码云数智、有赞、微盟深度解析 - 码云数智
  • 再论自然数全加和-质数的规律
  • 【黄河水质分析系统】(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 字符串哈希
  • 【旅游行为分析系统】(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • Linux系统入门
  • 【开题答辩全过程】以 基于SSM的电子书店管理系统设计与实现为例,包含答辩的问题和答案
  • 闭眼入!10个AI论文网站测评,专科生毕业论文写作必备工具推荐
  • 音视频隐写
  • 提升论文效率:11个AI写作辅助网站汇总
  • 【航空旅客满意度大数据分析平台】(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • php python+vue网吧计费管理系统_开题报告
  • 【开题答辩全过程】以 基于ssm的公寓出租管理系统的设计与实现为例,包含答辩的问题和答案