我是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/