在 Python 中,生成器(Generator)是一种特殊的迭代器,它允许你逐个生成值,而不是一次性生成所有值并存储在内存中。生成器的核心是 yield
关键字,它使得函数可以暂停执行,并在需要时恢复执行,从而实现惰性计算和高效的内存管理。本文将详细介绍 Python 生成器的概念、yield
的作用以及生成器的常见用法。
1. 什么是生成器?
生成器是一种迭代器,它可以通过 yield
关键字逐个生成值。与普通函数不同,生成器函数在每次调用时不会重新运行整个函数,而是从上次暂停的地方继续执行,直到遇到下一个 yield
语句。这种特性使得生成器非常适合处理大数据流或无限序列,因为它可以按需生成值,而无需一次性将所有值加载到内存中。
示例 1:一个简单的生成器
Python复制
def simple_generator():
yield 1
yield 2
yield 3
# 创建生成器对象
gen = simple_generator()
# 使用 next() 函数获取生成器的值
print(next(gen)) # 输出:1
print(next(gen)) # 输出:2
print(next(gen)) # 输出:3
# 如果继续调用 next(),将抛出 StopIteration 异常
# print(next(gen)) # 抛出 StopIteration
在这个例子中,simple_generator
是一个生成器函数,它通过 yield
逐个返回值。每次调用 next()
时,生成器会从上次暂停的地方继续执行,直到遇到下一个 yield
。
2. yield
关键字的作用
yield
是生成器的核心,它的主要作用是: