【发布时间】:2016-07-18 14:44:28
【问题描述】:
根据 Python 教程,9.2。 Python 范围和命名空间:
分配不复制数据——它们只是将名称绑定到对象。
所以我很惊讶下面的代码并没有让我感到惊讶:
>>> a = 42
>>> b = a
>>> b = b / 2
>>> a
42
>>> b
21
如果赋值 b = a 只是将名称 b 绑定到 int 对象 42,而 42 已经绑定到 a,那么 a 在 b = b / 2 之后不应该是 21被执行,因为a 和b 指的是同一个对象?
【问题讨论】:
-
不,你有 rebound 这个名字。整数是不可变的。阅读:nedbatchelder.com/text/names.html
-
对象没有名字——名字有对象。
-
@erip 你的意思是一个对象可以有很多不同的名字,而一个名字只能指一个对象?
-
@sunqingyao 是的,没错。
标签: python python-2.7 reference namespaces