python 变量名是用来存储数据的标识符,想要代码可以正常运行,变量名必须遵守官方规定的命名规则,同时推荐搭配规范的书写风格,避免报错也方便后续维护。核心要求就是变量名只能由字母数字下划线组成,不能以数字开头,不能使用 python 内置关键字,区分大小写,命名要有实际含义。这套规则本质是解释器识别变量的底层要求,一旦违反硬性规则,程序会直接抛出语法错误,而风格类规范虽然不会报错,但会降低代码可读性,属于行业通用编码习惯。
一 硬性强制规则 违反就报错
这部分是 python 解释器强制校验的规则,只要不满足,运行代码就会触发 SyntaxError 语法错误,必须严格遵守。
1 组成字符限制
变量名允许使用英文字母大小写,数字,下划线这三类字符,不可以加入空格 减号 井号 美元符号等特殊符号。
2 开头限制
变量名第一个字符不能是数字,必须是字母或者下划线。比如 123name 属于非法命名,name123 就是合法命名。
3 关键字禁用
python 自带的关键字比如 if for while class def return True False 等,不能拿来作为变量名,这些单词已经被解释器占用,有固定语法功能。
4 大小写敏感
python 区分大小写,Age age AGE 会被识别成三个完全独立的变量,不是同一个变量。
5 中文变量名补充说明
python3 版本支持中文作为变量名,语法层面可以运行,但是不推荐项目正式代码使用,跨环境编码容易出现异常,也不符合通用开发习惯。
二 推荐命名风格规范
这部分属于 PEP8 编码规范,不属于强制报错规则,是开发者通用约定,团队项目一般都会统一执行。
| 命名风格 | 格式特点 | 适用场景 | 示例 |
|---|---|---|---|
| 蛇形命名 | 全部小写,单词之间用下划线分隔 | 普通变量 函数名 | user_name total_count |
| 驼峰命名 | 首单词小写,后续单词首字母大写 | 类实例变量 部分框架代码 | userName totalCount |
| 大驼峰 | 每个单词首字母全部大写 | 类名 | UserInfo OrderList |
| 下划线前缀 | 单下划线开头 | 内部保护变量 | _secret_value |
| 双下划线开头 | 双下划线开头 | 名称改写私有变量 | __private_data |
补充要点,变量名尽量做到见名知意,不要使用 a b c 这种无意义单字母,循环临时变量可以使用 i j k 这类短变量。变量名不要过长,也不要和内置函数重名,比如把变量命名成 print len,会覆盖原本内置函数功能,引发隐藏 bug。
三 合法与非法命名对照
| 变量名 | 是否合法 | 说明 |
|---|---|---|
| score | 合法 | 纯字母,含义清晰 |
| student_age | 合法 | 字母加下划线,蛇形命名 |
| num99 | 合法 | 字母开头,后面搭配数字 |
| 99num | 非法 | 数字作为开头 |
| user-name | 非法 | 含有减号特殊字符 |
| if | 非法 | 属于 python 关键字 |
| UserAge | 合法 | 大小写区分,但是不符合 PEP8 推荐风格 |
四 常见踩坑说明
第一类坑就是误把关键字当变量,比如写 True=1,代码直接报错。第二类坑是使用减号命名,很多从其他语言转过来的开发者容易写成 user-age,python 会识别成减法运算,直接语法错误。第三类坑是覆盖内置函数,比如 print=1 之后,后续调用 print 打印内容就会失效。第四类坑是大小写混淆,以为 Age 和 age 是同一个变量,出现变量未定义报错。
整体总结,记住核心底线,只能字母数字下划线,不能数字开头,不能用关键字,区分大小写,日常开发优先使用蛇形命名,保证变量名语义清晰,就可以写出合规稳定的 python 代码。
【常见问题】
问题 1 python 变量名的命名规则里可以使用中文吗
回答 1 python 变量名的命名规则在 python3 语法层面允许中文变量名,但是不推荐正式项目使用,容易出现编码兼容问题,优先使用英文标识符。
问题 2 python 变量名的命名规则允许以数字开头吗
回答 2 python 变量名的命名规则明确不允许数字作为开头,数字放在第一位会触发语法错误,必须字母或者下划线开头。
问题 3 python 变量名的命名规则是否区分大小写
回答 3 python 变量名的命名规则是区分大小写的,大写和小写字母会被识别成不同变量,书写时需要保持统一风格。
问题 4 python 变量名的命名规则里 print 能不能作为变量名
回答 4 python 变量名的命名规则虽然 print 不是关键字,但是属于内置函数,不建议命名成 print,会覆盖原有内置打印函数,造成代码异常。
【免责申明】
本文内容基于 Python 官方语法与 PEP8 编码规范整理,仅用于学习参考,不同版本 Python 细节可能存在差异,实际开发请以官方文档为准。
