Skip to content

Python 初学者:理解对象和变量

在编程的世界里,程序就像是一系列指令,告诉计算机如何处理你提供的数据。这些数据可以是任何东西,从数字到文本,甚至是图像和视频。

而处理这些数据的关键,在于变量。变量就像是程序中的基本构建块,它们允许我们存储、访问和修改数据,从而进行各种计算和操作。

那么,变量到底是什么呢?简单来说,每个变量都有三个重要的组成部分:

  • 名称 (name): 也就是我们用来引用这个变量的“标签”。
  • 数据类型 (type): 告诉计算机这个变量存储的是什么类型的数据,例如数字、文本等等。
  • 值 (value): 变量中实际存储的数据内容。

在一些传统的编程语言,比如 Java 或 C++ 中,变量的数据类型是需要预先声明的。这意味着在创建变量时,你就必须明确指定它将存储哪种类型的数据。

举个例子,如果你想存储数字 1,你可能会这样写:

c++
int a = 1;

在这里,int 表示整数类型,a 是变量名,而 1 则是存储在变量 a 中的值。你可以把 a 想象成一个固定大小的盒子,只能用来存放整数。

盒子 'a'

如果你想改变 a 的值,你可以用另一个整数来替换它:

c++
a = 2;

装满的盒子 'a'

你还可以把 a 盒子里面的东西复制到另一个类似的盒子里:

c++
int b = a;

复制盒子 'a' 的内容

重要的是,可以有很多个盒子,每个盒子都装着相同的东西:

c++
int x = 3;
int y = 3;
int z = 3;

盒子 'x', 'y' & 'z'

这种在声明变量时必须指定其数据类型的语言,我们称之为静态类型语言。这意味着一旦变量的类型被确定,就不能随意更改,除非重新声明变量。

Python 则有所不同。它是一种动态类型语言。 在 Python 中,一切皆为对象 (object)。一个对象可以是一个数字、一个字符串、一个列表,等等。你可以把对象理解为一块包含了数据和操作方法 (methods) 的内存区域。

而变量名,在 Python 中,更像是一个指向实际对象的标签 (label)。这个标签可以贴在任何类型的对象上,无需预先声明类型。

例如:

python
a = 1

在这个例子中,a 仅仅是一个标签,指向存储了整数 1 的对象。我们可以让 a 指向另一个对象,而不需要担心类型不匹配的问题。

由于在 Python 中变量使用前无需声明,因此不存在像其他语言中那样的默认值(空盒子或 null)的概念。

对象的身份 (Identity)

当你在 Python 中创建一个新的对象时,Python 会为其分配一个唯一的标识符 (ID)。这个 ID 可以看作是对象在内存中的地址,它在对象的整个生命周期中保持不变。你可以使用内置函数 id() 来获取对象的 ID。

python
>>> a = 1
>>> id(a)
140407745943856
>>> a = 2
>>> id(a)
140407745943888

在上面的例子中,一开始 a 指向整数 1 的对象,后来 a 指向整数 2 的对象,所以 a 的 ID 发生了变化。这说明 a 指向了不同的对象。

python
>>> b = a
>>> id(b)
140407745943888

当我们将 a 赋值给 b 时,b 指向了与 a 相同的对象,而不是创建了一个新的副本。这意味着 ab 实际上指向内存中的同一个位置。

  • 静态类型语言: 变量类型在声明时确定,并且不能轻易更改。
  • 动态类型语言: 变量类型在使用时确定,可以指向不同类型的对象。
  • 对象: 包含了数据和操作方法的内存区域。
  • 变量名: 指向对象的标签。
  • 对象 ID: 对象在内存中的唯一标识符。