python:yield用法

yield 是 Python 中用于定义**生成器(generator)**的关键字。与 return 不同,yield 在函数中每次调用时会"产出"一个值,并暂停函数的执行状态;下次再调用时,从上次暂停的位置继续执行。


一、基本用法

示例 1:简单生成器

复制代码
def simple_generator():
    yield 1
    yield 2
    yield 3

gen = simple_generator()
print(next(gen))  # 输出: 1
print(next(gen))  # 输出: 2
print(next(gen))  # 输出: 3
# print(next(gen))  # 抛出 StopIteration 异常

也可以用 for 循环遍历:

复制代码
for value in simple_generator():
    print(value)
# 输出:
# 1
# 2
# 3

二、yield vs return

  • return:函数执行完就结束,返回一个值。
  • yield:函数变成生成器,可以多次返回值,每次调用恢复执行。

三、带参数的生成器(生成器表达式)

复制代码
def countdown(n):
    while n > 0:
        yield n
        n -= 1

for i in countdown(5):
    print(i)
# 输出: 5 4 3 2 1

这种写法非常节省内存,因为不会一次性生成所有值。

相关推荐
LawrenceLan4 小时前
Flutter 零基础入门(十一):空安全(Null Safety)基础
开发语言·flutter·dart
知乎的哥廷根数学学派4 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
且去填词4 小时前
DeepSeek :基于 Schema 推理与自愈机制的智能 ETL
数据仓库·人工智能·python·语言模型·etl·schema·deepseek
txinyu的博客4 小时前
解析业务层的key冲突问题
开发语言·c++·分布式
码不停蹄Zzz4 小时前
C语言第1章
c语言·开发语言
人工干智能4 小时前
OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
python·llm
databook4 小时前
当条形图遇上极坐标:径向与圆形条形图的视觉革命
python·数据分析·数据可视化
行者965 小时前
Flutter跨平台开发在OpenHarmony上的评分组件实现与优化
开发语言·flutter·harmonyos·鸿蒙
阿部多瑞 ABU5 小时前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
acanab5 小时前
VScode python插件
ide·vscode·python