鱼C论坛

 找回密码
 立即注册
查看: 1691|回复: 9

[已解决]python变量的性质

[复制链接]
发表于 2020-3-16 11:02:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)

结果为什么是[1,2,3,4,5]呢?
new = old 操作后,new和old这两个变量指向的是同一块内存,当一个变量的内存内容改变后,两个变量的内容都应该改变才对啊,为什么结果不是[6]?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 11:08:30 | 显示全部楼层
old重新赋值的时候会指向[6]的内存,而new依然指向[1,2,3,4,5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 11:08:41 | 显示全部楼层    本楼为最佳答案   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 11:09:01 | 显示全部楼层
本帖最后由 一个账号 于 2020-3-16 11:15 编辑

old = [6] 就将 old 指向了另一个地址,此时 old 和 new 就没有关系了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 11:10:11 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 11:11:06 | 显示全部楼层
一个账号 发表于 2020-3-16 11:09
old = [6] 就将 old 指向了另一个地址,此时 old 和 new 就没有区别了

是“没有关系”吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 11:13:16 | 显示全部楼层
python中是变量和标签,一个变量可以有多个标签,一个标签只能对应一个变量。
第一句话,是将old标签贴在了这个列表上,
第二句话,是将一个新的标签new也贴在了这个列表上,
第三句话,实际上是将old标签撕下来换到了另外一个变量上去了。
当一个变量没有任何标签之后,就会被释放掉(反正也无法访问了)。
这是我写的一点总结。希望能帮到你。python细节之2、变量名与标签 变量的赋值与修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 11:15:52 | 显示全部楼层

感谢提醒!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 11:17:03 | 显示全部楼层
变量名指向变量名不会创立连等关系,两者最终都指向变量名所标记的地址,因此其中一个变量名的值得改变不会对另一个变量名的值发生任何影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-16 11:40:47 | 显示全部楼层
一个账号 发表于 2020-3-16 11:09
old = [6] 就将 old 指向了另一个地址,此时 old 和 new 就没有关系了

我理解了,变量就是标签,给对应的内存贴标签,但是当以前的某个标签贴到了其他内容上,那么该标签就从原来的位置上挪到了新的内存位置上,贴原来内存地址的该标签就不存在了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 22:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表