Python 生成器generator的使用
生成器在 Python 中的定义与作用
生成器是 Python 中一种特殊的函数,它使用 yield
关键字来返回值,而不是使用 return
。当调用生成器函数时,它不会立即执行,而是返回一个生成器对象。这种机制使得生成器可以在需要时逐步生成数据,节省内存资源。
与普通函数不同,生成器可以暂停执行并保留状态,下次调用时从上次暂停的位置继续。这与迭代器类似,但生成器更易于实现。例如:
def simple_generator():yield 1yield 2yield 3for num in simple_generator():print(num)
运行结果为:
1
2
3
通过 yield
,我们可以创建高效的迭代结构,尤其适合处理大数据集或无限序列。
生成器的内部机制
生成器是 Python 中一种特殊的迭代器,它通过 yield
关键字实现延迟计算。当调用生成器函数时,会返回一个生成器对象,该对象支持迭代协议(__next__()
方法)。每次调用 __next__()
,生成器会从上次暂停的位置继续执行,直到遇到下一个 yield
或 return
。
例如:
def gen():yield 1yield 2yield 3g = gen()
print(next(g)) # 输出: 1
print(next(g)) # 输出: 2
print(next(g)) # 输出: 3
当所有值被产出后,再次调用 next(g)
会引发 StopIteration
异常,表示迭代结束。
生成器不仅支持 __next__()
,还支持 send(value)
方法,允许外部向生成器发送数据。在生成器中,yield
可以接收传入的值,如:
def gen():x = yieldprint("收到:", x)g = gen()
next(g) # 启动生成器
g.send("Hello") # 输出: 收到: Hello
生成器内部通过状态管理保存执行位置和局部变量,使得每次调用都能恢复执行。这种机制使其成为处理大数据流或无限序列的理想工具。
初识生成器
在 Python 中,生成器是一种特殊的函数,它能够“暂停”并“恢复”执行,从而逐步返回值。生成器的核心是 yield
关键字,它可以让函数在每次调用时返回一个值,并保留当前的状态,以便下次继续执行。
下面是一个简单的生成器示例,用于生成数字:
def simple_counter():yield 1yield