印刷斐波那契系列
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
那么这两种不同的方式在声明变量
之间有什么区别答案 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