Files

1.9 KiB

sources, brief
sources brief
summaries/07_Objects.md
summaries/02_More_functions.md
变量绑定说明 Python 变量名如何引用对象,以及重新赋值为什么不会修改原对象。

变量绑定

概念定义

变量绑定是 Python 中“名字指向对象”的机制。变量不是装对象的盒子,类型也不属于变量;变量名只是当前作用域中的一个名字,它绑定到某个对象。

理解变量绑定,是理解 concepts/Python-对象模型、concepts/可变性与引用、concepts/Python-参数传递、concepts/Python-可变对象、concepts/Python-不可变对象 和 concepts/Python-拷贝语义 的基础。

赋值的含义

a = [1, 2]
b = a

这段代码不会复制列表。a 和 b 都绑定到同一个列表对象。

b.append(3)
print(a)       # [1, 2, 3]

通过 b 修改对象,a 看到的是同一个对象的新状态。

b = [9, 9]
print(a)       # [1, 2, 3]

重新赋值只改变 b 的绑定关系,不会修改原来的列表对象。

与可变性的关系

可变对象可以在原地改变状态,不可变对象不能原地改变。对于不可变对象,所谓“修改变量”通常只是让变量名重新绑定到新对象。

s = "hello"
s = s.upper()

这不是修改原字符串,而是创建新字符串并让 s 绑定到它。

常见误区

  • “变量有类型”:在 Python 中,类型属于对象。
  • “赋值会复制对象”:赋值只建立名字到对象的绑定。
  • “参数传递会复制实参”:函数参数也是局部名字绑定。
  • “重新赋值会修改外部变量”:重新绑定只发生在当前作用域。

相关概念