分片“拷贝”的问题
各位鱼油,我对下面的代码产生了疑问:>>> old =
>>> new = old
>>> old =
>>> print(new)
按照我的逻辑,我来分析下这几句代码:
new = old 将这个列表同时贴上了new old 两个标签,也就是说new、old两个变量同时指向这个列表。
那么问题来了,将这个列表赋值给了old变量,那么就应该实现了覆盖啊,打印print(new)应该是 吧。
不明所以的我,进行了这么一般测试:(将第二三行的代码执行顺序换了下)
>>> old =
>>> old =
>>> new = old
>>> print(new)
对此,有点费解,请各位鱼油高抬贵口,讲解一番。
hi 请lz参考
>>> old =
>>> new = old
>>> id(old)
53994888
>>> id(new)
53994888
>>> old =
>>> id(old) #变量old的内存地址发生了变化
53808840
>>> id(new)
53994888 第一个的第二行,把new赋值,然后你修改的有事old的值,所以并不影响new. thexiosi 发表于 2018-8-6 17:37
hi 请lz参考
!!!!蟹蟹啦.另外 我也是海贼迷。哈哈哈 拉了盏灯 发表于 2018-8-6 17:43
第一个的第二行,把new赋值,然后你修改的有事old的值,所以并不影响new.
嗯!我知道这个效果了,但鱼友 我想知道的是 为什么会产生这样的结果。 好きだ 发表于 2018-8-6 17:44
!!!!蟹蟹啦.另外 我也是海贼迷。哈哈哈
没事 ,客气啦:) 海贼迷握个爪 我还是不太明白为什么地址只有old会变,既然赋值了,即使变化不应该同时变化吗?希望大家解答一下,谢谢!
页:
[1]