python的赋值顺序
元组赋值
一般情况下,python 的元组赋值可以当作没有顺序,但是如果交换的变量存在关联,元组赋值就是有顺序的。
例如:
a = 1
b = 2
a, b = b, a # 此时 a 为2, b 为1
先将右边变量打包成元组,即(2, 1),然后按照从左至右顺序,依次将 2 赋值给 a,将 1 赋值给 b。
实践1
k = 0
v = [10, 20, 30, 40]
k, v[k] = 1, 888
此时 k 为 1,v 为[10, 888, 30, 40]。
实践2
k = 0
v = [10, 20, 30, 40]
v[k], k = 888, 1
此时 k 为 1,v 为[888, 20, 30, 40]。
链式赋值
以a=b=c=d为例,赋值处理过程为:
temp = d
a = temp
b = temp
c = temp
实践1:
k, v = 0, [10,20,30,40]
k = v[k] = 3
v
赋值过程:
temp = 3
k = temp → k = 3 → v[k] == v[3]
v[3] = temp → v[3] = 3
因此,v = [10,20,30,3]
实践2
k, v = 0, [10,20,30,40]
k = v[k] = v[v[k]-1] = 3
v
赋值过程:
temp = 3
k = temp → k = 3 → v[k] == v[3], v[v[k]-1] = v[3-1] == v[2]
v[3] = temp → v[3] = 3
v[2] = temp → v[2] = 3
因此,v = [10,20,3,3]

浙公网安备 33010602011771号