Python:变量的使用及其差异("a,b = 0,1"VS"a = 0","b = 1")

waf*_*ead 2 python variables fibonacci

我正在查看Python手册,并找到了一个Fibonacci-Number生成器的代码片段:

def fib(n):    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print(b, end=' ')
        a, b = b, a+b
    print()
Run Code Online (Sandbox Code Playgroud)

输出依赖于n并返回有效的Fibonacci序列.

如果你重新设计它以单独使用变量"a"和"b":

def fib(n):    # write Fibonacci series up to n
    a = 0
    b = 1
    while b < n:
        print(b, end=' ')
        a = b
        b = a+b
    print()
Run Code Online (Sandbox Code Playgroud)

然后它将打印一个数字序列,其增加2的幂(例如1,2,4,8,1等等).

所以我想知道为什么会这样?变量的两次使用之间的实际差异是什么?

ssh*_*124 9

这样做:

a, b = b, a+b

相当于:

temp = a
a = b
b += temp
Run Code Online (Sandbox Code Playgroud)

它允许您同时进行两次计算,而无需中间/临时变量.

所不同的是,在你的第二个代码段,当你做的第二行b = a+b,你已经体改a前一行是一样的第一段代码.

例子

>>> a = 2
>>> b = 3
>>> a,b
2 3
>>> a,b = b,a
>>> a,b
3 2
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您使用问题中显示的第二种方法:

>>> a = 2
>>> b = 3
>>> a,b
2 3
>>> a = b
>>> b = a
>>> a,b
3 3
Run Code Online (Sandbox Code Playgroud)