yield 生成器函数(迭代器的一种)、生成器表达式

126 阅读1分钟

生成器函数

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)