这是语法吗:
x, y = 0,1
while y < 50:
print(y)
x, y = y, x+y
同上:
x = 0
y = 1
while y < 50:
print(y)
x = y
y = x+y
如果是这样,为什么它们打印不同的结果? 我试图了解第一个代码是如何打印的:1, 1, 3, 5, 8, 13, 21, 34
因为当我在脑海中调试并运行第二个代码时,它会打印:1, 2, 8, 16, 32
. 基本上我无法理解第一个代码是如何逐行工作的。
它们不一样。
在多个赋值(如x, y = y, x+y
(中,首先评估右侧。因此,x+y
被评估,则y
设置为等于x+y
。
说x=0
和y=1
.然后,x, y = y, x+y
计算结果为x, y = 1, 0+1
,所以x, y = 1, 1
。y = 1
.
在第二个示例中,x = y
导致x = 1
,下一行y = x+y
导致y = 2
。
他们给出不同结果的原因是,在第一个代码中,你同时修改 x 和 y,但是在第二个代码中,首先你增加 x,然后你修改 y,这是不利的。
第一个代码在 Python 中使用多个赋值,在其中创建一个元组并循环它并为每个变量赋值
这是Python处理你的行的方式:
(x,y) = (y,x+y)
这段代码是正确的:你可以遍历和观察它,
x,y = 0,1
x,y = 1,1
x,y = 1,2
x,y = 2,3
x,y = 3,5
第二个代码是完全错误的:
x = y
y = x+y
由于 x 在第一行用 y 初始化: 因此,第二行是 y = 2*y,因此您的输出不断加倍