python的赋值顺序

主要来源:https://blog.51cto.com/u_15127678/4736720

元组赋值

一般情况下,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]

posted @   Vonos  阅读(524)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示