这个swap实现如何在Python中运行?

时间:2013-04-14 05:59:15

标签: python swap

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

循环内的线如何工作? 某种程度上& b的价值变化,似乎可以理解如何......

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

3 个答案:

答案 0 :(得分:5)

b, a+b创建一个元组

将此元组解压缩回ab

答案 1 :(得分:2)

此行a, b = b, a+b相当于(a, b) = (b, a+b),这是一个元组赋值。

答案 2 :(得分:2)

有问题的行可以更清晰地写入(通过右侧的元组包装和左侧的序列拆包):

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

由于a和b的分配是并行执行的,因此与:

完全相同
new_a = b
new_b = a + b
a     = new_a
b     = new_b