Python使用名称来引用对象。当我们说a = b
时,a
和b
现在引用同一对象,如果我们改变了a
,那么在b
中也会看到相同的变化。例如:
a = [1, 2, 3]
b = a
a.append(4)
print(b)
将打印[1, 2, 3, 4]
。
然而,有些操作确实会创建新的对象。例如:
a = 1
b = a
a = a + 1
print(b)
将打印1
。显然,行a = a + 1
以某种方式创建了一个值为a + 1
的新对象,并将名称a
绑定到它上面。这是如何工作的?在这种情况下创建新对象的机制是什么?
这个问题不是这个问题的重复,因为我特别询问对象在这种情况下如何创建,而另一个问题更普遍地涉及名称共享对象的情况。
copy
或切片[:]
来复制它们),整数是不可变的(它们每次都被重新创建,就像字符串一样)。 - Chris_Randsa = a + 1
是否会 创建 一个新对象,因为 Python 缓存范围在 [-5,256] 的整数。相反,我认为将分配来自缓存的预先制作的整数对象给a
。换句话说,a
现在将指向与b
不同的对象,但在该语句中并未创建任何对象。如果我有错,请纠正我。 - Tagc