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]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理