【发布时间】:2017-12-27 11:53:08
【问题描述】:
在python中,代码
x = 0
y = x
y = 1
print x
代码返回“0”
x = [0]
y = x
y[0] = 1
print x
返回“[1]”。 为什么 python 对待列表与整数的处理方式如此不同,我能做些什么来强制它像对待顶部“x”一样对待底部的“x”?看起来像'='在各自的第二行意味着不同的东西——最上面一行只影响 y,而底部则以某种方式将 x 绑定到 y。那么也许我需要在底部代码中使用不同的符号?
【问题讨论】:
-
不,他们正在做同样的事情。阅读:nedbatchelder.com/text/names.html
-
这里不涉及任何字符串(
print所做的转换除外),你所拥有的是一个列表。y = x在像列表这样的 mutable 对象上只是一个引用赋值,它们引用的对象是相同的。 -
这是因为
x和y指的是同一个对象。 -
但是“相应的第三行”中的
=s 表现完全不同。 -
@cdarke 对,谢谢我已经编辑过了。
标签: python