今天被问到
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 大! 在线求助啊!!!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.