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

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

相关推荐
敏编程2 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪2 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook2 小时前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
花酒锄作田15 小时前
使用 pkgutil 实现动态插件系统
python
前端付豪18 小时前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
曲幽19 小时前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img
老赵全栈实战19 小时前
Pydantic配置管理最佳实践(一)
python
阿尔的代码屋1 天前
[大模型实战 07] 基于 LlamaIndex ReAct 框架手搓全自动博客监控 Agent
人工智能·python
AI探索者2 天前
LangGraph StateGraph 实战:状态机聊天机器人构建指南
python
AI探索者2 天前
LangGraph 入门:构建带记忆功能的天气查询 Agent
python