推荐答案
在 Python 中,yield
关键字用于定义一个生成器函数。生成器函数返回一个生成器对象,该对象可以用于迭代。yield
的作用类似于 return
,但它不会终止函数的执行,而是暂停函数的执行并保存当前的状态,以便下次调用时可以从暂停的地方继续执行。
本题详细解读
生成器函数
生成器函数是一种特殊的函数,它使用 yield
关键字来产生一系列的值。与普通函数不同,生成器函数在每次调用 yield
时都会暂停执行,并将 yield
后面的值返回给调用者。当生成器函数再次被调用时,它会从上次暂停的地方继续执行,直到再次遇到 yield
或函数结束。
生成器对象
生成器函数返回的是一个生成器对象。生成器对象是一个迭代器,可以使用 next()
函数或 for
循环来逐个获取生成器函数产生的值。
示例代码
-- -------------------- ---- ------- --- ------------------- ----- - ----- - ----- - - ------- --- - ------------------ - -- ------ ----- ---------------- - --- - ---------------- - --- - ---------------- - --- - - -- --- ------- --- ----- -- ------------------- ------------
生成器的优势
- 惰性求值:生成器只在需要时生成值,节省内存。
- 无限序列:生成器可以表示无限序列,因为它们不会一次性生成所有值。
- 状态保持:生成器函数在每次
yield
时都会保持当前状态,适合处理需要保持中间状态的任务。
使用场景
- 处理大数据集时,避免一次性加载所有数据到内存。
- 实现协程和异步编程。
- 生成无限序列,如斐波那契数列。
注意事项
- 生成器函数只能迭代一次,迭代结束后再次调用
next()
会抛出StopIteration
异常。 - 生成器对象不支持索引操作,因为它们不是列表或元组。