首先将 1 赋值于 a,即 a 指向了 1 这个对象。
接着 b = a 则表示让变量 b 也同时指向 1 这个对象。Python 的对象可以被多个变量所指向(引用)。
最后执行 a = a + 1,在这里需要注意的是,Python 的基础数据类型(例如整型(int)、字符串(string)等)是不可变的
所以,a = a + 1,并不是让 a 的值增加 1,而是表示重新创建了一个新的值为 2 的对象,并让 a 指向它。但是 b 仍然不变,仍然指向 1 这个对象。
因此最后的结果是,a 的值变成了 2,而 b的值不变仍然是 1。
通过这个例子你可以看到,这里的 a 和 b,开始只是两个指向同一个对象的变量而已,或者你也可以把它们想象成同一个对象的两个名字。 简单的赋值 b = a,并不表示重新创建了新对象,只是让同一个对象被多个变量指向或引用。
为什么?