Python生成器:理解yield关键字

在 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 是生成器的核心,它的主要作用是:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI软件改变生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值