Python 零基础教程

Python 变量

变量就像是用于存储数据值的“容器”,让你可以在程序的各个地方引用和操作这些数据。

本章将详细介绍变量命名的规则与约定、赋值的流程,以及在 Python 程序中高效使用变量的最佳实践。

1. 变量命名规范

为变量选择具有描述性且风格一致的名称,可以提高代码的可读性。在 Python 中,命名变量既有必须遵守的“硬性规则”,也有业界广泛认可的“约定俗成”。

1.2 变量命名规则(必须遵守)

如果你不遵守以下规则,Python 解释器将会报错(SyntaxError):

  • 必须以字母 (a-z, A-Z) 或下划线 (_) 开头:变量名绝对不能以数字开头。
  • 只能包含字母、数字和下划线:在首字符之后,你可以使用这三者的任意组合。
  • 区分大小写:myVariablemyvariableMyVariable 在 Python 中会被视为三个完全不同的变量。
  • 不能是 Python 关键字:你不能使用 Python 的保留字作为变量名,例如 ifelseforwhiledefclassimportTrueFalseNone 等。

1.3 变量命名约定(强烈推荐)

遵循以下约定能让你的代码更清晰、更专业:

  • 使用具有描述性的名称:选择能清晰表明变量用途或内容的名称。例如,student_name 远比单纯的 sn 要好。
  • 使用蛇形命名法 (snake_case):这是 Python 中最常见、最推荐的变量命名约定。单词之间使用下划线分隔(例如 number_of_students、user_age)。
  • 以小写字母开头:这是普通变量的通用约定。我们稍后会学到的“类 (Class)”名称,通常才以大写字母开头。
  • 保持一致性:在整个项目中坚持使用同一种命名风格。
  • 避免使用单字符变量名(特定情况除外):虽然技术上允许,但通常应避免使用像 i 或 x 这样的单字符名称。除非它们被用作循环计数器,或者在非常简短且作用域极小的代码块中(含义一目了然)。

1.4 合法与非法的变量名示例

为了直观展示,我们将合法与非法的命名整理如下:

变量名是否合法?原因说明
my_variable完美的 snake_case 命名。
_internal_var以下划线开头是合法的(通常表示内部使用)。
studentName合法(驼峰命名法),但在 Python 中不如蛇形命名法推荐。
number1包含数字,但没有以数字开头。
1st_variable错误:变量名不能以数字开头。
my-variable错误:不能包含连字符(减号),会被误认为是减法运算。
for错误:for 是 Python 的保留关键字。

代码演示:

# 合法的变量名
my_variable = 10
_internal_variable = "这是一个内部值"
studentName = "Alice"  # 允许使用驼峰命名法,但不推荐
StudentName = "Bob"    # 允许使用帕斯卡命名法,但不推荐
number1 = 123

# 非法的变量名(取消注释会引发错误)
# 1st_variable = 5  # 不能以数字开头
# my-variable = 20  # 不允许使用连字符
# for = 10          # 'for' 是保留关键字

2. 变量赋值

变量赋值就是将一个值与一个变量名关联起来的过程。在 Python 中,使用赋值运算符 = 来分配值。

2.1 基础赋值

语法非常简单:变量名 = 值

age = 30
name = "Charlie"
pi = 3.14159
is_student = True

在这些例子中:

  • age 被赋值为整数 30
  • name 被赋值为字符串 "Charlie"
  • pi 被赋值为浮点数 3.14159
  • is_student 被赋值为布尔值 True

2.2 多重赋值

Python 允许你同时为多个变量赋予相同的值:

x = y = z = 0
print(x, y, z)  # 输出: 0 0 0

你也可以在一行代码中,将多个不同的值分别赋给多个变量:

a, b, c = 1, 2, "hello"
print(a, b, c)  # 输出: 1 2 hello

重要提示:使用多重赋值时,请确保等号右侧的值的数量与左侧变量的数量完全一致。否则,程序会抛出 ValueError(值错误)。

2.3 重新赋值 (Re-assignment)

你可以随时更改变量的值:

age = 25
print(age)  # 输出: 25

age = 26
print(age)  # 输出: 26

当你对变量重新赋值时,旧的值会被新的值直接替换覆盖。

2.4 赋值与数据类型 (动态类型)

Python 是一种动态类型 (dynamically typed) 语言,这意味着你不需要显式声明变量的数据类型。变量的类型会根据赋给它的值自动推断得出。我们将在下一章详细探讨数据类型。

my_variable = 10       # 现在是一个整数 (Integer)
my_variable = "Hello"  # 重新赋值后,现在是一个字符串 (String)
my_variable = 3.14     # 再次赋值后,现在是一个浮点数 (Float)

一个变量可以容纳任何类型的值,你只需赋予它一个不同类型的新值,就能改变该变量所承载的数据类型。

3. 使用变量的最佳实践

高效规范地使用变量能显著提升代码质量。

3.1 初始化变量

在使用变量之前对其进行初始化是一个好习惯。这意味着在首次声明变量时,给它一个初始值。这有助于防止错误,并使代码的逻辑更加可预测。

# 初始化变量
name = ""
age = 0
total = 0.0
is_valid = False

3.2 合理使用“常量”

虽然 Python 语言本身并没有内置真正的“常量”(即一旦赋值就不能更改的变量),但业界有一个普遍的约定:使用全大写字母来命名那些应该被视为常量的变量

PI = 3.14159
MAX_SIZE = 100

请注意,这仅仅是一个约定;你在代码中依然可以强行修改 PIMAX_SIZE 的值。但是,通过使用全大写字母,你是在向其他程序员(以及未来的自己)发出强烈信号:这些值是固定参数,不应该被修改

3.3 删除变量

你可以使用 del 关键字来删除一个变量。这会将该变量从系统内存中彻底移除。

my_variable = 10
print(my_variable)  # 输出: 10

del my_variable
# print(my_variable)  # 如果取消注释,这行会报错 (NameError),因为该变量已不复存在

删除变量在处理大型数据结构需要释放内存时非常有用。不过,请谨慎使用 del,因为一旦删除,后续代码尝试访问它时就会触发报错。