0
def fibonacci(num):
    a=0
    b=1
    for i in range(num):
        a, b=b, a+b
    print a

循环内的线是如何工作的?不知何故 a & b 的价值观发生了变化,似乎可以理解..

编辑:出于某种原因,我感到困惑,认为 b=b 的中间 exp 是新东西......没读好......它真的是 (a,b) = (b, a+b) 这是python中交换的基本形式(:

4

3 回答 3

5

b, a+b创建一个元组

这个元组被解包回ab

于 2013-04-14T06:02:19.403 回答
2

这一行a, b = b, a+b等价于(a, b) = (b, a+b),它是一个元组赋值。

于 2013-04-14T06:03:49.473 回答
2

有问题的行可以更清楚地写成(通过右侧的元组打包和左侧的序列解包):

(a, b) = (b, a + b)

由于对 a 和 b 的分配是并行执行的,因此这与以下内容完全相同:

new_a = b
new_b = a + b
a     = new_a
b     = new_b
于 2013-04-14T06:04:09.713 回答