【发布时间】:2015-09-30 20:48:14
【问题描述】:
最初变量 a、b 和 c 都具有值 1 和相同的地址。当变量 a 增加 1 时,地址会改变,而变量 b 和 c 的地址保持不变。有人可以详细说明这个地址分配吗?
现在当变量 b 增加 1 并且 b 的地址现在等于 a 的地址时。有人也可以详细说明一下吗?
>>> a = 1
>>> b = a
>>> c = b
>>> a += 1
>>> print a,b,c
2 1 1
>>> id(a)
26976576
>>> id(b)
26976600
>>> id(c)
26976600
>>> b += 1
>>> print a,b,c
2 2 1
>>> id(c)
26976600
>>> id(b)
26976576
>>> id(a)
26976576
【问题讨论】:
-
请阅读nedbatchelder.com/text/names.html。另请注意,您问题的第二部分是实现细节 - CPython 实习生小整数,这不是您应该依赖的行为。
标签: python python-2.7 pass-by-reference memory-address pass-by-value