Python3之高级特性:通过斐波那契数列讲解yield工作原理

本文通过斐波那契数列的实现,详细解释了Python中`yield`关键字的工作原理。`yield`使得函数变为生成器,在执行到`yield`时暂停并保存当前状态,下次迭代时能从上次暂停的地方继续执行,生成下一个斐波那契数。这种特性在处理大量数据时非常有用,避免了一次性加载所有数据导致的内存压力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们现在通过一个列子来讲一讲yield的工作原理

示例1:斐波那契数列通过yield实现

def Fab(n):

    """
    使用yield来返回值;用非递归来实现斐波那契数列,使用yield来返回值,
    """
    a, b, m = 0, 1, 0
    i = 1
    while m < n:
        yield b
        a, b, m = b, a+b, m+1
        print("m值为: ", m, "\n")
        i += 1


t = Fab(10)
print("变量t的类型为: ", type(t), "\n")

num = 1
for i in t:
    print('Fab(%d)' % num, i)
    num += 1

输出结果:

变量t的类型为:  <class 'generator'> 

fab(1) 1
m值为:  1 

fab(2) 1
m值为:  2 

fab(3) 2
m值为:  3 

fab(4) 3
m值为:  4 

fab(5) 5
m值为:  5 

fab(6) 8
m值为:  6 

fab(7) 13
m值为:  7 

fab(8) 21
m值为:  8 

fab(9) 34
m值为:  9 

fab(10) 55
m值为:  10 

1、函数中有yield语句就代表该函数就是一个生成器

2、这个例子中Feb(n)函数就是我们自定义的一个生成器,而Feb中所有语句就是用来定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值