Python 变量赋值:深入理解引用而非复制
在 Python 编程中,变量的赋值是一个基础但又至关重要的概念。与其他一些编程语言不同,Python 中的变量赋值并不是值的复制,而是将变量名指向存储数据的内存地址,也就是所谓的“引用”。深入理解这一特性,对于编写高效、避免潜在 bug 的 Python 代码至关重要。
1. 变量、对象和引用
要理解 Python 的赋值机制,需要先明确三个概念:
- 变量:变量是用来引用内存地址的标识符,可以理解为贴在内存地址上的一个标签。
- 对象:对象是存储在内存中的数据,包括数据的值、类型和标识(内存地址)。
- 引用:引用是变量和对象之间的连接,变量通过引用指向对象所在的内存地址。
例如,执行 a = 10
这行代码时,Python 解释器会执行以下步骤:
- 创建一个整数对象
10
,并分配一块内存空间来存储它。 - 创建一个变量
a
。 - 将变量
a
引用到整数对象10
的内存地址。
此时,a
并不是存储了 10
这个值,而是存储了 10
所在的内存地址。可以通过 id()
函数来查看对象