python生成器实现斐波那契数列

img

以上是生成斐波那契数列的代码,问最后一行是什么意思
并解释一下代码

最后一行的意思是,把back2的值赋值给back1, 再把back1+back2的和赋值给back2。

fib()函数是一个生成器函数,它的作用是,当每次调用next()方法,就可以返回这个函数计算出的当前项的斐波那契数列的值。

测试代码如下:

参考链接:


https://blog.csdn.net/weixin_44992737/article/details/125860953

https://qb.zuoyebang.com/xfe-question/question/b1565033a69fae0837095a71193fcdee.html


def fib():  # 生成器函数,用于返回当前项斐波那契数列的值
    #  https://www.codenong.com/41615756/
    back1, back2 = 0,1 # back1赋值第一个值0,back2赋值为第二个值1
    while True:
        
        yield back1  # 返回back1的值,但是函数不会退出,等待下一次调用next()方法
        #  下面的作用相当于,把back2的值赋值给back1, back1+back2的和赋值给back2
        #  back1  back2  back1+back2
        #     1     1      2
        # print("before: back1=",back1,",back2=",back2)
        back1,back2 = back2,back1+back2
        # print("after: back1=",back1,",back2=",back2)
        

fibNum = fib()
for i in range(0,11):
    
    # https://blog.csdn.net/weixin_44992737/article/details/125860953
    # https://qb.zuoyebang.com/xfe-question/question/b1565033a69fae0837095a71193fcdee.html
    # 调用next()方法来获取一项斐波那契数列的值
    print("斐波那契数列第"+str(i)+"项为:"+str(next(fibNum)))

img

yield就是生成器的语法,它每次返回一个,普通函数return就没了,它还会继续运行。