马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位鱼油,我对下面的代码产生了疑问:>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)
[1, 2, 3, 4, 5]
按照我的逻辑,我来分析下这几句代码:
new = old 将[1, 2, 3, 4, 5]这个列表同时贴上了new old 两个标签,也就是说new、old两个变量同时指向这个列表。
那么问题来了,将[6]这个列表赋值给了old变量,那么就应该实现了覆盖啊,打印print(new)应该是 [6] 吧。
不明所以的我,进行了这么一般测试:(将第二三行的代码执行顺序换了下)>>> old = [1, 2, 3, 4, 5]
>>> old = [6]
>>> new = old
>>> print(new)
[6]
对此,有点费解,请各位鱼油高抬贵口,讲解一番。
hi 请lz参考
>>> old = [1,2,3]
>>> new = old
>>> id(old)
53994888
>>> id(new)
53994888
>>> old = [4]
>>> id(old) #变量old的内存地址发生了变化
53808840
>>> id(new)
53994888
|