Python中的延迟生成函数:使用yield语句生成无限序列
发布时间:2023-06-17 12:51:00
Python中的延迟生成函数,是指生成器函数(Generator Function),也就是包含yield语句的函数。
在普通的函数中,当程序执行到return语句时,函数返回一个值,并结束函数的执行。
而在生成器函数中,当程序执行到yield语句时,函数会生成一个值,并暂停函数的执行,等待下一次调用时继续执行。
因为生成器函数可以暂停和继续执行,所以可以用来生成无限序列,从而实现一些延迟性的操作。
比如下面这个例子,通过生成器函数实现了一个无限的斐波那契数列:
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a+b
# 使用for循环输出前10个斐波那契数
for i, fib in enumerate(fibonacci()):
if i > 9:
break
print(fib)
输出结果为:
0 1 1 2 3 5 8 13 21 34
可以看到,这个生成器函数可以不断生成下一个斐波那契数,并且不会停止。
另一个例子,通过生成器函数实现一个无限的自然数序列:
def natural_numbers():
i = 1
while True:
yield i
i += 1
# 使用for循环输出前10个自然数
for i, num in enumerate(natural_numbers()):
if i > 9:
break
print(num)
输出结果为:
1 2 3 4 5 6 7 8 9 10
可以看到,这个生成器函数可以不断生成下一个自然数,并且不会停止。
总结一下,生成器函数可以用来实现一些延迟性的操作,比如生成无限序列,或者在处理大数据量时,可以一边生成数据,一边处理数据,从而避免一次性的占用过多内存空间。
