Python - 斐波那契函数变量值声明之间的差异

标签 python fibonacci variable-declaration

我是Python的初学者。我正在寻找一种创建斐波那契函数的类型,

def fib(n):
a=0
b=1
while a<n:
    print a
    a,b=b,a+b

我看到了 a,b=b,a+b 声明。所以,我认为 a=b 和 b=a+b 与 a,b=a,b+a 相同,所以我将函数更改为这样:

def fib(n):
a=0
b=1
while a<n:
    print a
    a=b
    b=a+b

我认为这是正确的,但是当我执行该程序时,我得到了不同的输出。有人可以向我解释这两种类型的声明之间的区别吗?

无论如何,谢谢。

最佳答案

b, a+b 创建一个包含这两个值的元组。然后a, b = ...解压元组并将其值分配给变量。然而,在您的代码中,您覆盖了第一行的值,因此第二行使用新值。

a, b = b, a + b

大致等于:

tmp = a
a = b
b = tmp + b

关于Python - 斐波那契函数变量值声明之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351921/

相关文章:

java斐波那契数列错误: not getting proper output

python - 在python中将两个字符串相加

python - 从稀疏计数矩阵构建预期频率矩阵的更快方法

python - NumPy 的 : How to convert an array type quickly

python - Docker - 在服务之间共享本地存储

python - 如何强制编译器或解释器查看二进制数的二进制补码?

C++ Stack Fibinacci Hw 问题澄清

c - 动态规划问题-斐波那契数列

java - 在Java中的非静态类中声明静态变量

mysql - MySQL中以下变量初始化风格有什么区别?