Python学习第一课:变量、列表和索引

约 10 分钟 python

Python 基础:变量与数据类型

学习 Python 的过程中,变量与数据类型是最先接触的两个概念。它们看似简单,却涉及编程语言如何表示数据、引用对象以及执行运算等基本问题。

本文结合《Python 编程:从入门到实践(第 3 版)》第 2 章的内容,梳理变量与变量名的区别,以及数据类型的基本含义。

一、变量与变量名

1. 变量是什么?

变量(Variable)是编程语言中的一个抽象概念。在概念层面,我们可以将变量理解为程序中能够与不同值建立关联的程序实体。

变量名(Variable Name)则是程序中用于标识变量的具体符号,例如 x、name 和 age。

为了避免概念混淆,可以暂时区分为:

  • 变量:抽象的编程概念。
  • 变量名:程序中具体的标识符。
  • 值:变量当前关联的数据。

需要注意,这是一种用于概念分析的区分。在 Python 的实际运行机制中,并不存在一个必须独立于名称之外的变量容器。

2. Python 如何实现变量机制?

考虑以下代码:

name = 1

这里包含三个部分:

  • name:标识符,充当变量名。
  • =:赋值运算符。
  • 1:表示整数值的字面量。

Python 通过名称绑定(Name Binding)实现变量机制。执行赋值语句时,名称 name 与相应的整数对象建立绑定关系。

可以将这一过程理解为:名称是标记,对象是它所引用的数据,而绑定关系将二者联系起来。

这也是《Python 编程:从入门到实践(第 3 版)》将变量比喻为“标签”的原因。

3. 重新赋值意味着什么?

x = 18
x = 20

执行第一行后,名称 x 绑定到整数对象 18;执行第二行后,名称 x 重新绑定到整数对象 20。

这里发生变化的是名称与对象之间的绑定关系,而不是变量名 x 本身。

再看一个例子:

x = 18
y = x
x = 20

print(y)

输出:

18

执行 y = x 时,Python 让 y 绑定到 x 当时所关联的对象。之后,x 重新绑定到 20,并不会使 y 自动跟随变化。

因此,两个不同的名称可以关联同一个对象;一个名称的重新绑定,也不会自动改变另一个名称的绑定关系。

二、什么是数据类型?

1. 数据类型的基本含义

数据类型(Data Type)是对数据进行分类的概念。它不仅用于区分不同种类的数据,也规定了相应对象所支持的操作及其行为。

Python 中常见的基本数据类型包括:

数据类型名称示例
int整数类型18、-3、0
float浮点数类型3.14、-0.5、18.0
str字符串类型"Python"、"18"

可以使用内置函数 type() 查看对象的类型:

print(type(18))
print(type(3.14))
print(type("Python"))

输出分别表明,这三个对象的类型是 int、float 和 str。

2. 数据类型与数学集合的类比

可以借助数学中的集合来理解数据类型。

例如,在数学中:

[ 3\in\mathbb{Z} ]

表示整数 (3) 属于整数集合 (\mathbb{Z})。

类似地,在 Python 中,我们可以说整数对象 3 属于 int 类型。

不过,这只是一种帮助理解的类比。Python 的类型并不完全等同于数学集合:类型除了对对象进行分类,还规定了对象支持的操作和行为。

3. 数据类型属于对象,而不是固定属于变量名

考虑以下代码:

x = 18
x = "Hello"

第一行执行后,x 绑定到 int 类型的整数对象;第二行执行后,x 重新绑定到 str 类型的字符串对象。

因此,不能认为变量名 x 固定属于 int 类型。

更准确地说,Python 中对象具有相应的数据类型,而名称可以在程序执行过程中绑定到不同类型的对象。

这也是 Python 动态类型特征的一部分。

三、整数与浮点数

1. 整数类型 int

整数类型用于表示整数,例如:

age = 18
count = 100
temperature = -3

这些整数对象都属于 int 类型。

2. 浮点数类型 float

Python 将带小数点的数称为浮点数。

height = 1.75
price = 3.14
number = 18.0

它们都属于 float 类型。

需要注意,浮点数不一定具有非零的小数部分。18.0 在数学上与整数 (18) 数值相等,但在 Python 中,它仍然属于 float 类型。

print(type(18))
print(type(18.0))

前者是 int,后者是 float。

3. 普通除法与整除

Python 使用 / 和 // 表示两种不同的除法运算。

print(9 / 3)
print(9 // 3)

输出:

3.0
3

普通除法 / 返回浮点数,即使结果在数学上是整数。

整除运算符 // 则返回向下取整后的商。当两个操作数都是整数时,结果为整数。

例如:

print(5 / 2)    # 2.5
print(5 // 2)   # 2
print(-5 // 2)  # -3

最后一个例子说明,整除并不是简单地删除小数部分,而是向负无穷方向取整。

区分 int 和 float,有助于理解 Python 如何表示数值,以及不同运算如何影响结果的类型。

四、字符串 str

1. 什么是字符串?

根据教材第 2.3 节,字符串(String)是一系列字符。

字符可以是字母、数字、标点符号、空格等。例如:

"Hello"
"Python 3"
"2026"
"Hello, world!"

这些都是字符串。

2. 引号的作用

Python 使用单引号或双引号界定字符串:

name = "Alice"
language = 'Python'

两种写法都合法。

引号属于 Python 语法的一部分,用来告诉解释器将其中的内容识别为字符串。引号本身通常不属于字符串的实际内容。

例如:

text = "18"
number = 18

虽然二者都与数字字符 18 有关,但它们的数据类型不同:

  • "18" 是字符串,表示由字符组成的文本。
  • 18 是整数,表示整数值。

因此,字符串并不等于数字,只是恰好可以包含数字字符。

3. 数据类型如何影响运算?

不同数据类型可能对同一个运算符具有不同的行为。

例如:

print(3 + 3)
print("3" + "3")

输出:

6
33

对整数使用 +,执行的是算术加法;对字符串使用 +,执行的是字符串拼接。

这说明数据类型并非仅仅给数据贴上分类标签,它还影响 Python 如何处理数据。

五、总结

通过今天的学习,可以建立以下认识:

  1. 变量是抽象的编程概念,变量名是程序中的具体标识符;二者可以在概念上区分。
  2. Python 通过名称绑定实现变量机制。赋值操作可以改变名称当前关联的对象。
  3. 数据类型用于对对象进行分类,并规定相应对象支持的操作与行为。
  4. int、float 和 str 分别表示整数、浮点数和字符串。
  5. 数据类型属于对象,而不是固定属于变量名。
  6. 相同的运算符作用于不同的数据类型时,可能产生不同的行为。

变量与数据类型构成了理解 Python 的基础。后续学习列表、字典、条件判断和函数时,我们仍然会不断用到这些概念。

学习原则:先理解概念,再掌握语法,最后通过实践巩固。