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 1
yield 2
yield 3
# 使用生成器
gen = simple_generator()
for value in gen:
print(value)
这个生成器函数会依次返回 1、2 和 3,并且在每次 yield 之后都会暂停,直到被再次调用。
再看一个稍微复杂一点的例子,用 yield 来生成斐波那契数列:
def fibonacci_sequence():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
# 使用生成器
fib = fibonacci_sequence()
for _ in range(10):
print(next(fib))
在这个例子中,fibonacci_sequence 是一个无限生成斐波那契数列的生成器。利用 yield,我们可以在不占用大量内存的情况下获取数列中的任意多个元素。