|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码
|
|