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

【Python】一直没搞懂生成器是什么。。

生成器

上期我们讲解了迭代器:【Python】一直没搞懂迭代器是什么。。-CSDN博客
这期我们来讲讲它的好兄弟——生成器

生成器 (Generator)?

生成器是一种特殊的 迭代器 (Iterator)。
迭代器 是你可以逐个访问其元素的对象(比如在 for 循环中使用)。列表、元组、字典、字符串等都是可迭代对象,但它们不是迭代器本身。你可以通过调用 iter() 函数从可迭代对象获取迭代器。迭代器有一个 next() 方法,每次调用它会返回下一个元素,如果没有更多元素了,会引发 StopIteration 异常。
生成器 是一种创建迭代器的简单而强大的方法。它看起来像一个普通的函数,但关键区别在于它使用 yield 关键字来返回值,而不是 return

yield 是啥?

yield 是一个 Python 关键字,它有两个主要作用:

  1. 定义生成器函数: 任何包含 yield 语句的函数都会自动成为一个生成器函数。调用这个函数不会立即执行函数体,而是返回一个生成器对象(也就是一个迭代器)。
  2. 返回值并暂停: 当生成器函数的执行遇到 yield 语句时:
    • yield 后面的表达式的值会被返回给调用者(即正在迭代该生成器的代码)。
    • 函数的执行会在此处暂停,并保存当前的所有状态(包括局部变量)。
    • 当调用者请求下一个值时,函数会从暂停的地方恢复执行,直到遇到下一个 yield 或函数结束。
  3. 对比学习:yield vs return:
  • return彻底终止函数的执行,并返回一个值(或 None)。函数的状态不会被保存。

  • yield 只会暂停函数的执行,并返回一个值。函数的状态会被保存,以便下次可以恢复。一个生成器函数可以有多个 yield 语句。

yield生成器,它们俩两个的关系?

    <

相关文章:

  • Fine Structure-Aware Sampling(AAAI 2024)论文笔记和启发
  • Milvus(13):自定义分析器、过滤器
  • Prompt compress 技术探究-LLMLingua
  • 【Linux】深入理解程序地址空间
  • WPF中Behaviors
  • [特殊字符] 人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总) [特殊字符]
  • leetcode 59. 螺旋矩阵 II
  • 大连理工大学选修——图形学:第二章 计算机图形硬件及绘图系统
  • Git推送大文件导致提交回退的完整解决记录
  • 短信侠 - 自建手机短信转发到电脑上并无感识别复制验证码,和找手机输验证码说再见!
  • LLM论文笔记 28: Universal length generalization with Turing Programs
  • 365打卡第R6周: LSTM实现糖尿病探索与预测
  • idea结合CopilotChat进行样式调整实践
  • [pdf,epub]292页《分析模式》漫谈合集01-59提供下载
  • STM32Cube-FreeRTOS任务管理工具函数-笔记
  • ActiveMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 的选型参考(一)
  • 个性化推荐:大数据引领电子商务精准营销新时代
  • 探秘 Git 底层原理:理解版本控制的基石
  • 【现代深度学习技术】现代循环神经网络06:编码器-解码器架构
  • Python基本语法(lambda表达式)
  • 国防部新闻发言人就日本民用飞机侵闯中国钓鱼岛领空答记者问
  • 解放军报八一锐评:青春无限好,奋斗正当时
  • 乌美签署矿产协议
  • 俄伏尔加格勒机场正式更名为斯大林格勒机场
  • 中国海油总裁:低油价短期影响利润,但也催生资产并购机会
  • 华夏幸福:去年营业收入237.65亿元,同比减亏12亿元