在 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
: 立即终止函数的执行并返回一个值,不保存执行状态。