python – `a,b = b,a b`和`a = b之间的区别是什么? b =斐波那契的b` [复制]

参见英文答案 > Multiple assignment and evaluation order in Python                                    8个
我是python的新手所以我想问你一个问题..

以前在我写斐波那契函数时,我试图替换

a, b = b, a+b

a = b
b = a + b

相信它是一样的但我注意到输出是不同的(和错误的)
这两个代码不应该做同样的事情吗?
这是完整的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def main(args):
    fibonacci(1000)
    return 0

def fibonacci(n):
    a, b = 0, 1
    while b < n:
         print b,
         a, b = b, a+b # if I comment this and decomment the two line below it shows me a different output 
        # a = b
        # b = a + b

if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

解决方法:

当你这样做时:

a, b = b, a+b

a将保持b的先前值,b将基于先前的值保持b.

但是当你这样做时:

a = b
b = a + b

a的值在a = b期间更新为b,因此b将具有不同的结果,因为a现在已更新.

例如,请参阅交换两个值的简单代码.有可能因为价值的动态变化:

>>> a , b = 5, 10
>>> a, b = b, a
>>> a, b
(10, 5)
上一篇:Javascript中的斐波纳契数列


下一篇:java Domj4读取xml文件