生成器yield

yjh1995 / 2024-10-15 / 原文

在 Python 中,yield 是一个关键字,用于定义生成器函数。生成器函数是一种特殊类型的函数,它返回一个生成器对象,可以用于迭代。与普通函数不同,生成器函数不一次性返回结果,而是每次生成一个值,并在需要时继续执行。

  • 生成器函数: 使用 yield 关键字的函数。调用生成器函数不会立即执行函数体,而是返回一个生成器对象。

  • yield 关键字: 暂停函数的执行并返回一个值,保存函数的执行状态,以便在下一次迭代时恢复。

以下是一个简单的生成器函数示例:

# 定义生成器函数
def count_up_to(max_value):
   count = 1
   while count <= max_value:
       yield count
       count += 1

# 使用生成器
counter = count_up_to(5)
# 迭代生成器对象,每次迭代调用生成器函数
for number in counter:
   print(number)

生成器的优点

  • 节省内存: 生成器在每次迭代时生成一个值,而不是一次性生成所有值,因此在处理大量数据时可以节省内存。

  • 惰性计算: 生成器按需生成值,适合处理需要逐步生成的序列。

  • 简化代码: 使用 yield 可以简化迭代器的实现,不需要编写复杂的类和方法。

return 的区别

  • yield: 暂停函数的执行并返回一个值,保存函数的执行状态。下次调用时从暂停的位置继续执行。

  • return: 立即终止函数的执行并返回一个值,不保存执行状态。