我是Python新手(而且对编程不太了解),但我记得读过Python通常不会复制值,因此任何语句a = b都会使b指向a。如果我跑
a = 1
b = a
a = 2
print(b)
给出结果 1。那不应该是 2 吗?
不,结果应该是 1。
考虑赋值运算符 (=
)作为参考的分配。
a = 1 # a references the integer object 1
b = a # b and a reference the same object
a = 2 # a now references a new object (2)
print b # prints 1 because you changed what a references, not b
在处理问题时,这整个区别确实是最重要的mutable对象如list
s 相对于不可变的像这样的物体int
, float
and tuple
.
现在考虑以下代码:
a = [] # a references a mutable object
b = a # b references the same mutable object
b.append(1) # change b a little bit
print a # [1] -- because a and b still reference the same object
# which was changed via b.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)