Python中的变量复制如何正常工作?

Lau*_*ent 3 python variables reference

为什么:

 >>> a = 1
 >>> b = a
 >>> a = 2
 >>> print(a)
 2
 >>> print(b)
 1
Run Code Online (Sandbox Code Playgroud)

...但:

 >>> a = [3, 2, 1]
 >>> b = a
 >>> a.sort()
 >>> print(b)
 [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我的意思是,为什么变量真的被复制而迭代器只被引用?

Pet*_*per 6

变量不是"真正复制"的.变量是对象的名称,赋值运算符将名称绑定到运算符右侧的对象.更详细地说:

>>> a = 1意思是" a命名为指对象1".

>>> b = a意思是"使b名称引用当前所引用的对象a.这是1.

>>> a = 2意思是" a命名为指对象2".这对于哪个对象1现在引用的任何其他对象都没有影响,例如b.

在第二个示例中,两个ab都是引用相同列表对象的名称.a.sort()将该对象变异,并且因为两个变量都引用同一个对象,所以在两个名称下都可以看到变异的效果.