生成器是 Python 中一种特殊的迭代器,它允许我们通过一个函数逐步生成值,而不是一次性生成所有值。在 Python 中,生成器主要用于处理大量数据,或者需要按需计算的场景。

什么是生成器?

生成器是一种特殊的迭代器,它在运行时生成一系列值,而不是一次性生成所有值。生成器函数使用 yield 语句来返回值,而不是 return。每次调用生成器函数时,它会从上次停止的地方继续执行,直到遇到下一个 yield 语句。

生成器的基本用法

def simple_generator():
    yield "Hello"
    yield "World"

gen = simple_generator()
for i in gen:
    print(i)

输出:

Hello
World

高级生成器特性

生成器表达式

生成器表达式与列表推导式类似,但它们返回的是生成器对象,而不是列表。

numbers = (x * x for x in range(1, 6))
for i in numbers:
    print(i)

输出:

1
4
9
16
25

生成器送值

在某些情况下,我们可能需要将值发送回生成器。Python 允许我们使用 send() 方法来实现这一点。

def generator_with_send():
    while True:
        x = yield
        print(f"Received: {x}")

gen = generator_with_send()
next(gen)
gen.send(10)

输出:

Received: 10

生成器关闭

当生成器不再需要时,我们可以使用 close() 方法来关闭它。

gen = (x * x for x in range(1, 6))
for i in gen:
    print(i)
gen.close()

生成器与迭代器

生成器是迭代器的一个子集。所有生成器都是迭代器,但并非所有迭代器都是生成器。

扩展阅读

想要了解更多关于 Python 生成器的信息,可以阅读本站的 Python 生成器入门教程

[center]https://cloud-image.ullrai.com/q/Python_Generator/[/center]