当你做 赋值时,即:
something = x, y
此时Python会做的是一个隐藏式创建一个tuple(不可改变),他由那个元素(x,y)组成,
x = 'zhangsan'
y = 'Tom'
print(x + ' '+ y)
输出很正常的是:zhangsan Tom
但是一旦涉及到运算,这个地方就需要小心了。下面看两个列子:
x = 0
y = 1
for i in range(20):
x,y = y,x+y
print( x, end = ', ')
输出为:1,1,2,3,5,8,13,…
但是一旦代码变成:
x = 0
y = 1
for i in range(20):
x = y
y = x + y
print(x ,end = ', ')
输出就成了:1, 2, 4, 8, 16, 32, 64, 128, 256, 。。。。
产生这种差别的原因是:在x,y = y,x+y逻辑中,等号两边的运算不会改变x,y的值,想对等号右边进行计算,然后将得到的值在进行赋值,也就是说这个时候千万不要出现第二种运算思维,