请阐述 Python 3 中 yield 关键字的功能与应用场景。
考察说明
考查对生成器核心机制的理解及实际应用能力。
回答思路
- 【回答框架 1】yield 在函数中用于定义生成器,函数执行到 yield 时暂停并返回一个值,下次迭代从暂停点继续,从而惰性生成序列。
- 【回答框架 2】生成器在循环、流式处理大数据或实现协程时有用,因为它不一次性加载全部数据,节省内存。
- 【回答框架 3】与 return 相比,return 结束函数,yield 暂停函数,保留局部状态,可通过 next() 或 for 循环驱动。
- 【回答框架 4】生成器表达式类似列表推导式但用圆括号,例如 (x*x for x in range(10)),也基于 yield 机制。
- 【回答框架 5】从生成器获取多个值时,可用 yield from 委托给子生成器,简化嵌套生成器的代码。
- 【关键点 1】yield 使函数成为生成器,暂停并产出值。
- 【关键点 2】生成器惰性计算,节省内存。
- 【关键点 3】yield from 用于委托子生成器。
- 【易错点 1】生成器只能迭代一次,重复使用需重新创建。
- 【易错点 2】忘记 next() 或 for 循环驱动,生成器不会执行任何代码。