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

yield 关键词

核心作用

  1. 暂停与恢复函数执行
def count_up_to(n):i = 1while i <= n:yield i  # 暂停在这里,返回当前值i += 1# 调用
for num in count_up_to(3):print(num)  # 输出:1, 2, 3
  1. 惰性求值(Lazy Evaluation)
    不像 return 立即返回所有结果
    yield 按需产生值,节省内存

使用列表 - 一次性占用全部内存

data = [i * 2 for i in range(1000000)]

使用生成器 - 逐个产生值

def data():for i in range(1000000):yield i * 2

内存友好!

  1. 在流式响应中的应用
async def story_generator():async for chunk in generate_story_stream(query):yield chunk  # 每收到一段数据就发送给前端return StreamingResponse(story_generator(),media_type="text/event-stream"
)

这里 yield 让后端能够:

边计算边发送 - 不需要等故事完全生成
实时推送 - 前端可以边接收边渲染
保持连接 - SSE 持续传输数据流
yield vs return
特性 return yield
返回值 一次返回,函数结束 多次返回,函数暂停
状态保留 不保留 保留局部变量状态
使用场景 普通函数 生成器/协程
实际例子

def fibonacci(n):a, b = 0, 1for _ in range(n):yield aa, b = b, a + b

生成前 10 个斐波那契数

list(fibonacci(10)) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

http://www.jsqmd.com/news/650063/

相关文章:

  • Redis如何监控系统QPS的变化趋势
  • 2026年服务业企业找法律顾问推荐,本地专业企业法律顾问价格多少 - myqiye
  • Obsidian模板系统解决方案:构建企业级知识管理架构
  • 【信奥业余科普】05:人类怎么跟计算机说话?编程语言和操作系统的故事
  • 【Scala PyTorch深度学习】PyTorch On Scala 系列课程 第七章 14 :常用模型CNN RNN Pooling【AI Infra】[PyTorch Scala 硕士研一课程】
  • 如何用Obsidian模板系统构建你的第二大脑:Zettelkasten笔记法完整指南
  • D2DX完整指南:让经典暗黑破坏神2在现代PC上焕发新生的5个关键步骤
  • Windows上安装APK文件的最佳解决方案:APK Installer全面指南
  • 紧急预警:2026年起欧盟AI法案将强制翻译类模型披露语义偏移率,奇点大会公布首份合规检测工具包(限时开放72小时)
  • UG二次开发效率翻倍:手把手教你配置这款‘学生党自制’的Grip编辑器(含代码库管理与快速操作指南)
  • TurboVNC终极指南:如何构建高性能远程桌面解决方案
  • 重载型倍速链输送线厂家测评:复杂定制与重载能力哪家强 - 丁华林智能制造
  • 3个Obsidian模板技巧:从碎片化信息到结构化知识的高效转化
  • 3个核心功能解决Zotero中文文献管理难题:Jasminum插件深度解析
  • 终极指南:如何在Mac上轻松实现微信防撤回,让重要信息不再消失
  • 别再死磕微分方程了!用拉普拉斯变换和传递函数搞定运动控制建模(附Python/Matlab代码示例)
  • M2LOrder模型在AE视频片段智能剪辑与特效合成中的应用
  • 现代控制理论核心:从能控能观到结构分解的系统性解析
  • 告别Keil,在Windows上用VSCode+GNU Make+JLink搭建国产MCU开发环境(以FM33为例)
  • ComfyUI-SUPIR图像超分辨率项目深度解析与ACCESS_VIOLATION错误实用解决方案
  • RetinaFace模型部署避坑指南:常见问题与解决方案
  • 【SITS2026权威前瞻】:生成式AI落地的5大断层、3个爆发点与2026年必须抢占的7类应用卡位
  • 告别XShell!用FinalShell免费管理你的Windows服务器,这5个功能真香了
  • 告别卡顿!用nvprof/nvvp揪出你CUDA程序里的‘性能小偷’(附Python脚本实战)
  • 提升设计:核心方法与实战技巧解析
  • 告别单调桌面:如何用DyberPet打造你的专属虚拟伙伴?
  • 如何在ComfyUI中轻松生成高质量AI视频:WanVideoWrapper完整指南
  • 你的Win7还在裸奔吗?用Metasploit的reverse_tcp Payload快速验证内网主机安全(保姆级)
  • go 切片
  • 从仿真波形看本质:手把手教你用ModelSim/Verilator调试Verilog的always与assign