生成器函数

python/generator2026-10-16 14:44:24

生成器函数 是一种特殊的函数,它使用 yield 关键字而不是 return 关键字来返回值。生成器函数返回一个特殊的迭代器,称为生成器。你可以使用 next() 函数来获取生成器的下一个值。

生成器函数的一个关键特性是它们只在需要产生下一个值时运行。这使得它们非常适合处理大数据集,因为它们不需要在内存中存储所有的值。

例如,以下是一个简单的生成器函数,它生成前 n 个整数:

def generate_integers(n):
    i = 0
    while i < n:
        yield i
        i += 1

你可以像这样使用这个生成器函数:

gen = generate_integers(5)
print(next(gen))  # 输出: 0
print(next(gen))  # 输出: 1
# ...等等,直到耗尽生成器

yield、return 与生命周期

生成器函数调用时产生生成器对象,函数体在迭代推进时执行;yield 暂停并保留状态,后续恢复,而 return 在生成器中用于结束执行并可携带完成值。因此,“用 yield 而不是 return”应理解为产生元素的方式,不是生成器内不能写 return。

惰性产生元素可以降低一次性保存全部结果的需求,但若函数内部先构建完整列表,或调用方把结果全部收集起来,仍会占用相应内存。持有文件等资源的生成器也需要明确关闭与清理;仅创建生成器并不意味着资源管理问题已被解决。

参考:Python yield 表达式与生成器。

本页目录