Python_yield
yield是Python中的关键字,用于在函数中返回生成器。
当函数被调用时,yield会返回一个值,并保存当前函数状态。
下次迭代时,函数会从保存的状态继续执行,而非从头开始。
yield常用于处理大数据集或需要保持内存使用高效的场景。
例如,创建一个简单的生成器函数:
def count_up_to(n):for i in range(n):yield i# 使用生成器
for num in count_up_to(5):print(num)
此函数会依次返回0到n-1的值。
跟普通的 return 不同的是,yield 会返回一个值,并且保存当前函数的状态,以便下次迭代时从此状态继续执行。这在处理大数据集或需要保持内存使用高效的场景中特别有用。
def simple_generator():yield 1yield 2yield 3# 使用生成器
gen = simple_generator()for value in gen:print(value)
这个生成器函数会依次返回 1、2 和 3,并且在每次 yield 之后都会暂停,直到被再次调用。
再看一个稍微复杂一点的例子,用 yield 来生成斐波那契数列:
def fibonacci_sequence():a, b = 0, 1while True:yield aa, b = b, a + b# 使用生成器
fib = fibonacci_sequence()for _ in range(10):print(next(fib))
在这个例子中,fibonacci_sequence 是一个无限生成斐波那契数列的生成器。利用 yield,我们可以在不占用大量内存的情况下获取数列中的任意多个元素。