为什么这两个python函数会返回不同的结果?

Moo*_*Moo 3 python python-2.7 python-3.x

1-

 def fib1(n):
     a = 0
     b = 1
     while a < n:
        print b
        a = b
        b = a+b
Run Code Online (Sandbox Code Playgroud)

2-

 def fib2(n):
     a, b = 0,1
     while a < n:
         print b
         a,b = b, b+a
Run Code Online (Sandbox Code Playgroud)

执行时:

fib1(10) 我得到了错误的答案: 0 1 2 4 8

fib2(10) 我得到了正确的答案: 0 1 1 2 3 5 8

dus*_*sch 8

在fib 1中 a = b 覆盖的值a,

这意味着a不再是声明的正确价值

b = a+b

但是,在你的第二个例子中,这些事情在线路上同时发生,a,b = a, b+a这意味着a仍然是正确的值.