小小张说故事
Python 的 yield from 到底转发了什么:拆开 send、throw 和那个 return 值
原创
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
小小张说故事
社区首页
>
专栏
>
Python 的 yield from 到底转发了什么:拆开 send、throw 和那个 return 值
Python 的 yield from 到底转发了什么:拆开 send、throw 和那个 return 值
小小张说故事
关注
发布于 2026-11-14 08:50:40
发布于 2026-11-14 08:50:40
36
0
举报
概述
yield from 不是省一层 for 循环的语法糖,而是把调用方与子生成器直接接通:send 的值、throw 的异常、close 的关闭信号全部双向透传,子生成器 return 的值还会成为整个表达式的结果。本文用本机 CPython 3.13.14 实测 GET_YIELD_FROM_ITER/SEND/YIELD_VALUE/END_SEND 字节码、对比手写循环丢失 return 值、PEP 479 的 RuntimeError,附对照表与七条排错清单
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
python
目录
一、先看最容易被忽略的:return 值
二、send 和 throw 是双向的
三、3.13 里,它编译成什么
四、一个必须记住的坑:PEP 479
五、对照表
六、七条排错清单
小结
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档