在python中声明变量的这两种方式有什么不同?

时间:2014-03-23 11:33:06

标签: python

印刷斐波那契系列

a,b,c=1,1,1
while (c<7):
  print(b,end=" ")
  a,b,c=b,b+1,c+1

输出是&gt;&gt; 1 2 3 5 8 13

当我跟踪代码时,我发现结果是&gt;&gt; 1 2 4 8 16 32

这个输出是以这种方式声明变量

a,b,c=1,1,1
while (c<7):
  print(b,end=" ")
  a=b
  b=a+b
  c=c+1

那么这两种不同的方式在声明变量

之间有什么区别

3 个答案:

答案 0 :(得分:2)

不同之处在于,当你说:

  a,b,c=b,b+1,c+1

评估=的rhs,然后将值分配给lhs上的变量。

只要分配对后续分配没有副作用,这就可以正常工作。例如:

a=42
b=7+a
c=b-a

不同
a, b, c = 42, 7+a, b-a

如果a,b,c都设置为0,则在第一种情况下,你最终分别为42,49,7。而在第二种情况下,你得到42,7,0

答案 1 :(得分:1)

您的第一个示例中发生的事情称为“元组分配”。

Python首先构造元组(b, b+1, c+1),然后成对地将每个值分配给其对应的变量。

这是一种更灵活的分配方式。

答案 2 :(得分:1)

这一行:

a,b,c=b,a+b,c+1

相当于:

new_a = b
new_b = a + b
new_c = c + 1

a = new_a
b = new_b
c = new_c