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)
我的意思是,为什么变量真的被复制而迭代器只被引用?
变量不是"真正复制"的.变量是对象的名称,赋值运算符将名称绑定到运算符右侧的对象.更详细地说:
>>> a = 1意思是" a命名为指对象1".
>>> b = a意思是"使b名称引用当前所引用的对象a.这是1.
>>> a = 2意思是" a命名为指对象2".这对于哪个对象1现在引用的任何其他对象都没有影响,例如b.
在第二个示例中,两个a和b都是引用相同列表对象的名称.a.sort()将该对象变异,并且因为两个变量都引用同一个对象,所以在两个名称下都可以看到变异的效果.