Python 中 yield 关键字的作用?

推荐答案

在 Python 中,yield 关键字用于定义一个生成器函数。生成器函数返回一个生成器对象,该对象可以用于迭代。yield 的作用类似于 return,但它不会终止函数的执行,而是暂停函数的执行并保存当前的状态,以便下次调用时可以从暂停的地方继续执行。

本题详细解读

生成器函数

生成器函数是一种特殊的函数,它使用 yield 关键字来产生一系列的值。与普通函数不同,生成器函数在每次调用 yield 时都会暂停执行,并将 yield 后面的值返回给调用者。当生成器函数再次被调用时,它会从上次暂停的地方继续执行,直到再次遇到 yield 或函数结束。

生成器对象

生成器函数返回的是一个生成器对象。生成器对象是一个迭代器,可以使用 next() 函数或 for 循环来逐个获取生成器函数产生的值。

示例代码

-- -------------------- ---- -------
--- -------------------
    ----- -
    ----- -
    ----- -

- -------
--- - ------------------

- -- ------ -----
----------------  - --- -
----------------  - --- -
----------------  - --- -

- -- --- -------
--- ----- -- -------------------
    ------------

生成器的优势

  1. 惰性求值:生成器只在需要时生成值,节省内存。
  2. 无限序列:生成器可以表示无限序列,因为它们不会一次性生成所有值。
  3. 状态保持:生成器函数在每次 yield 时都会保持当前状态,适合处理需要保持中间状态的任务。

使用场景

  • 处理大数据集时,避免一次性加载所有数据到内存。
  • 实现协程和异步编程。
  • 生成无限序列,如斐波那契数列。

注意事项

  • 生成器函数只能迭代一次,迭代结束后再次调用 next() 会抛出 StopIteration 异常。
  • 生成器对象不支持索引操作,因为它们不是列表或元组。
纠错
反馈