生成器是 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]