多值分配

时间:2019-05-29 05:18:33

标签: python python-3.x

a, b, n = 0, 1, 500
while a < n:
    print(a)
    a, b = b, a+b  

a, b, n = 0, 1, 500
while a < n:
    print(a)
    a = b
    b = a+b

两者都给出不同的输出。 a, b = b, a+ba = b; b = a+b有什么区别?

4 个答案:

答案 0 :(得分:1)

下面的代码就像交换。

a, b = b, a+b  

就像这样做

temp = a
a = b
b = temp + b

答案 1 :(得分:0)

a, b = b, a+b

等同于

tmp = a
a = b
b = tmp+b

答案 2 :(得分:0)

这不是逗号分隔的值。您正在执行元组拆包。

a, b, n = 0, 1, 500

与:

a, b, n = (0, 1, 500)

它们不同的原因是第一行将b分配给a,然后将a和b加在一起。它基本上与:

a = b
b = a+b

答案 3 :(得分:0)

a, b, n = 0, 1, 500
while a < n:
    print(a)
    a = b
    b = a+b

在上面的代码行中-在print(a)之后,会将b变量中的代码值分配给第一个变量,因此a的值将被更新,并且a的更新值将用于b = a + b < / p>

假设a = 0,b = 1。因此,在print(a)之后,a的值将首先为1,b的值为1 + 1 = 2。

a, b, n = 0, 1, 500
while a < n:
    print(a)
    a, b = b, a+b

在上面的代码中,在print(a)之后,同时分配了a和b值。在这种情况下,将在print(a)中打印的任何a值都将用于进一步为a分配值。

假设a = 0和b = 1, 在print(a)首先打印0之后,a中的值为1,b中的值为0 + 1 = 1,因为b = a + b将使用= 0而不是a = 1。