今天被问到
a,b = b,a 是如何实现的
轻蔑的告诉对方这是因为交换了内存地址啊
然而我自己多事,要给别人演示
a = 1
b = 2
id(a)4304968096
id(b)
4304968064
a,b = b,a
id(a)4304968064
id(b)
4304968096
目前为止没有任何问题
然后我又解释到:
因为实际上它是这样运行的啊
(a,b)=(b,a)
a1
b
2
你看,这是生成了两个新的元组在参与运算
id((a,b)),id((b,a))
(4356155464, 4356155464)
诶?! 你等等
(a,b) is (b,a)
False
诶?! 诶?! 你再等等(莫非 tuple 太特殊了)
id([a,b]),id([b,a])
(4356157384, 4356157384)
我 c?! 不行!
id([a,b][0]),id([b,a][0])
(4304968096, 4304968064)
是不同的 id 啊,这个......
那个,你等等啊
各位 V 大! 在线求助啊!!!