生成器函数
yield 是 Python 中的一个关键字,用于定义生成器函数(generator function)。生成器函数是一种特殊的函数,它可以在迭代过程中生成一个序列的值,而不需要一次性将所有值都存储在内存中。
生成器函数通过使用 yield 语句来生成值。当生成器函数被调用时,它会返回一个生成器对象。每次从生成器对象中请求下一个值时,生成器函数会从上次离开的地方继续执行,直到遇到 yield 语句,然后生成相应的值,并将函数的状态保存,以便下次继续执行。
通常使用在处理大量数据时,它可以按需生成值,不需要将所有值都加载到内存中。
def my_generator():
yield 1
yield 2
yield 3
# 调用生成器函数,返回生成器对象
gen = my_generator()
# 从生成器对象中依次获取值
print(next(gen)) # 输出: 1
print(next(gen)) # 输出: 2
print(next(gen)) # 输出: 3
# 如果继续请求下一个值,将引发 StopIteration 异常
print(next(gen)) # 引发 StopIteration 异常
生成器表达式
与列表推导式[]区分,他用()括起来,他是按需生成,不会一次性生成所有结果。
squares = (x**2 for x in range(1, 5))
for square in squares:
print(square)