讲解
变量是存放数据的名字。Python 里创建变量不需要声明,直接赋值即可:score = 60。等号是赋值不是数学里的相等,读作「把 60 放进 score」。之后随时可以用 score = 95 让它指向新的值。理解 Python 变量的正确模型是「名字贴标签」:score = 60 是让名字 score 贴在值 60 上,再写 another = score 是让另一个名字也贴在同一个值上——变量不是装数据的盒子,而是指向值的标签。
变量名由字母、数字、下划线组成,不能以数字开头,区分大小写(name 和 Name 是两个变量),也不能用保留关键字(如 for、if、class,可以用 keyword 模块查看完整列表)。社区通行规范(PEP 8)是小写字母加下划线的「蛇形命名」:user_name、total_price、is_ready;全大写下划线用于约定常量:MAX_RETRY_TIMES = 3——注意 Python 没有真正的常量,全大写只是「请不要改它」的君子协定。
Python 是动态类型语言,同一个变量可以先指向数字再指向字符串,完全合法。但工程实践中不建议这样做:一个名字的含义变来变去,读代码的人(包括三天后的你自己)会痛苦。想同时给多个变量赋值,Python 还支持链式赋值 a = b = 0 和元组解包赋值 x, y = 10, 20,后者让交换两个变量优雅到一行:x, y = y, x。
示例
# 创建变量就是直接赋值
score = 60
print('初始分数:', score)
# 重新赋值:名字指向新的值
score = score + 40
print('加分之后:', score)
# 蛇形命名与全大写约定常量
user_name = '小明'
MAX_LOGIN_TIMES = 5
print(user_name, '最多可以尝试登录', MAX_LOGIN_TIMES, '次')
# 元组解包:一次赋多个值
x, y = 10, 20
print('交换前:', x, y)
x, y = y, x # Python 特色:一行交换
print('交换后:', x, y)
# 动态类型:合法,但不推荐滥用
value = 42
print(type(value))
value = '四十二'
print(type(value))
# 查看所有保留关键字
import keyword
print('关键字数量:', len(keyword.kwlist))
常见坑
- 使用未定义的变量:拼写错误如 print(scor) 会抛 NameError,这是新手最常见的报错,先看名字有没有拼对、有没有先赋值。
- 覆盖内置名字:把变量命名成 list、str、sum、id 之后,对应的内置函数就被「遮住」无法使用了。避免用内置名做变量名。
- 误以为 = 是判断相等:if score = 60 是语法错误,判断相等要用 ==(运算符一章详讲)。
- 可变对象的「标签」陷阱:a = [1, 2] 后 b = a,b.append(3) 会同时影响 a——两个名字贴在同一个列表上。列表一章会展开讲。
小结
赋值就是给值贴名字标签;命名用蛇形、避开关键字和内置名;x, y = y, x 一行交换。下一节深入第一类数据:数字。