Python 变量
变量就像是用于存储数据值的“容器”,让你可以在程序的各个地方引用和操作这些数据。
本章将详细介绍变量命名的规则与约定、赋值的流程,以及在 Python 程序中高效使用变量的最佳实践。
1. 变量命名规范
为变量选择具有描述性且风格一致的名称,可以提高代码的可读性。在 Python 中,命名变量既有必须遵守的“硬性规则”,也有业界广泛认可的“约定俗成”。
1.2 变量命名规则(必须遵守)
如果你不遵守以下规则,Python 解释器将会报错(SyntaxError):
- 必须以字母 (
a-z,A-Z) 或下划线 (_) 开头:变量名绝对不能以数字开头。 - 只能包含字母、数字和下划线:在首字符之后,你可以使用这三者的任意组合。
- 区分大小写:
myVariable、myvariable和MyVariable在 Python 中会被视为三个完全不同的变量。 - 不能是 Python 关键字:你不能使用 Python 的保留字作为变量名,例如
if、else、for、while、def、class、import、True、False、None等。
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 = False3.2 合理使用“常量”
虽然 Python 语言本身并没有内置真正的“常量”(即一旦赋值就不能更改的变量),但业界有一个普遍的约定:使用全大写字母来命名那些应该被视为常量的变量。
PI = 3.14159
MAX_SIZE = 100请注意,这仅仅是一个约定;你在代码中依然可以强行修改 PI 或 MAX_SIZE 的值。但是,通过使用全大写字母,你是在向其他程序员(以及未来的自己)发出强烈信号:这些值是固定参数,不应该被修改。
3.3 删除变量
你可以使用 del 关键字来删除一个变量。这会将该变量从系统内存中彻底移除。
my_variable = 10
print(my_variable) # 输出: 10
del my_variable
# print(my_variable) # 如果取消注释,这行会报错 (NameError),因为该变量已不复存在删除变量在处理大型数据结构需要释放内存时非常有用。不过,请谨慎使用 del,因为一旦删除,后续代码尝试访问它时就会触发报错。