欢迎访问宙启技术站
智能推送

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

可以看到,这个生成器函数可以不断生成下一个自然数,并且不会停止。

总结一下,生成器函数可以用来实现一些延迟性的操作,比如生成无限序列,或者在处理大数据量时,可以一边生成数据,一边处理数据,从而避免一次性的占用过多内存空间。