简短的答案是因为列表是 可变的 ,整数是 不可变的 。
您无法在适当的位置对整数进行突变,因此我们将其称为“不可变”。考虑到这一点,诸如在整数上加法之类的操作不会修改原始对象,而是返回一个新值-
因此您的原始变量将保持不变。因此,如果我们存储对整数的引用,则只要我们不更改它们之一,它们就只会是同一对象:
>>> foo = 1>>> bar = foo>>> foo is barTrue>>> foo += 23>>> foo3>>> bar1>>> foo is barFalse
在另一方面列表是“可变的”(可以修改相同的对象基准),和类似的操作
pop()发生变异的
list就地,改变原。这也意味着,如果您编辑对诸如的可变对象的引用
list,原始对象也将被更改:
>>> baz = [1, 2, 3, 4, 5]>>> qux = baz>>> qux is bazTrue>>> baz.pop()5>>> qux[1, 2, 3, 4]>>> baz[1, 2, 3, 4]>>> qux is bazTrue



