news 2026/4/16 18:15:46

深入理解 Python 中的 yield 关键字

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解 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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 23:03:09

科研效率拉满!2026 优质 AI 写论文软件精选(实测推荐)

核心推荐(按优先级排序)1. PaperRed(首推⭐⭐⭐⭐⭐)定位:国内学生专属全流程论文神器,毕业之家联动工具核心功能:一键生成论文初稿、智能查重降重、文献引用自动标注、格式自动排版、开题报告 …

作者头像 李华
网站建设 2026/4/15 16:43:44

毕业论文无忧:11个AI辅助写作网站精选

人工智能语言模型的快速发展显著改变了学术研究方式,特别是ChatGPT等工具自2022年推出后,AI在学术写作、数据分析、模式识别及决策辅助等领域广泛应用,帮助研究者提升效率。目前已有多种AI工具可支持毕业论文写作全流程,涵盖不同学…

作者头像 李华
网站建设 2026/4/16 16:10:32

11个AI工具助力毕业论文写作,覆盖多学科需求

人工智能语言模型的快速发展显著改变了学术研究方式,特别是自2022年11月ChatGPT发布后,AI工具在学术界的应用迅速普及,帮助研究人员提升效率、节省时间。这些工具能分析数据、识别模式、生成内容并辅助决策,覆盖写作、编辑和研究支…

作者头像 李华
网站建设 2026/4/16 14:23:28

AI赋能:6款高效工具提升论文质量与写作效率

当前学术写作领域已出现一系列融合人工智能技术的创新工具,这些系统依托前沿的自然语言处理算法,能够高效完成论文框架自动构建、文本润色提升以及相似度检测等关键任务,特别适合研究生学位论文写作和学术材料整理等应用场景。值得注意的是&a…

作者头像 李华
网站建设 2026/4/16 13:03:10

AI创作工具横评:10款免费与付费选项性能解析

�� 10大降AIGC平台核心对比速览 排名 工具名称 降AIGC效率 适用场景 免费/付费 1 askpaper ⭐⭐⭐⭐⭐ 学术论文精准降AI 付费 2 秒篇 ⭐⭐⭐⭐⭐ 快速降AIGC降重 付费 3 Aibiye ⭐⭐⭐⭐ 多学科论文降AI 付费 4 Aicheck ⭐⭐⭐⭐…

作者头像 李华