yield 生成器产出
最后更新:2026-09-22
yield 生成器产出
yield 把函数变成生成器;每次 next() 时函数执行到 yield 处返回值并暂停。
| 分类 | 关键字与语句 |
|---|---|
| 类型 | 关键字与语句 |
| Python 版本 | all |
📝 语法
yield [expression]
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
[0, 1, 2]
🏷️ 相关关键字与语句
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Qyield 和 return 有什么区别?
Areturn 结束函数并返回值;yield 把函数变成生成器,每次 next() 执行到 yield 处返回一个值并暂停,下次调用从暂停处继续执行。
Q调用带 yield 的函数为什么没有执行函数体?
A因为调用只是创建了一个生成器对象,函数体要等第一次 next()(或 for 循环、list() 转换)时才真正开始执行。
Q生成器能重复遍历吗?
A不能,生成器是一次性的,遍历完就耗尽,再迭代拿到的是空。要反复遍历就先把结果转成 list,或者重新创建生成器。
Qyield from 是什么意思?
Ayield from iterable 是 for x in iterable: yield x 的简写,用于在生成器里「委托」另一个可迭代对象,逐个产出其中的元素。