常量
14.4 常量
🔑 记忆技巧:Python无真正不可修改常量,依靠命名规范区分;全大写变量约定为常量,全程不重新赋值。
✂️ 常量规范语法:CONST_NAME = 值
常量指程序运行全程固定不变的数据,Python语法层面没有强制锁定常量的关键字,依靠编码规范实现:
• 命名:全部大写,下划线分隔多个单词
• 使用约定:定义后不再修改、重新赋值
• 本质:仍是普通变量,人为约束不修改
⚠️ 重点:Python仅靠命名区分常量,代码依然能强行修改,工程中靠团队规范约束。
常量命名速查:
• PI = 3.1415926:单个单词常量,全大写
• MAX_STUDENT = 50:多词常量,下划线分隔
• DEFAULT_COLOR = "#ffffff":配置类常量
• VERSION = "2.1.0":版本常量
• EMPTY_LIST = []:固定容器常量
常量对照表:
| 变量类型 | 普通变量 | 约定常量 |
|---|---|---|
| 命名格式 | user_name、num | USER_NAME、MAX_NUM |
| 修改权限 | 允许任意重新赋值 | 规范禁止二次赋值 |
| 语法限制 | 无限制 | 代码可强制修改,无报错 |
| 适用场景 | 程序动态变化数据 | 固定参数、配置、固定数值 |
__name__ 双下划线是系统内置,不属于自定义常量。基础常量定义
以下代码含详细中文注释,可直接复制运行。建议对照输出理解每一行的作用。
# ======================================== # 示例:基础常量定义 # 说明:建议复制到 .py 文件运行,或粘贴到 Python 交互模式 # ======================================== PI = 3.1415926 # 圆周率常量,全程不修改 MAX_AGE = 120 # 最大年龄限制常量 APP_NAME = "学生管理系统" print(PI) # 输出:3.1415926 print(MAX_AGE) # 输出:120 print(APP_NAME) # 输出:学生管理系统
多单词常量命名
以下代码含详细中文注释,可直接复制运行。建议对照输出理解每一行的作用。
# ======================================== # 示例:多单词常量命名 # 说明:建议复制到 .py 文件运行,或粘贴到 Python 交互模式 # ======================================== DEFAULT_PAGE_SIZE = 10 LOGIN_ERROR_CODE = 401 BASE_FILE_PATH = "./data/" print(DEFAULT_PAGE_SIZE) # 输出:10 print(LOGIN_ERROR_CODE) # 输出:401 print(BASE_FILE_PATH) # 输出:./data/
常量参与计算
以下代码含详细中文注释,可直接复制运行。建议对照输出理解每一行的作用。
# ======================================== # 示例:常量参与计算 # 说明:建议复制到 .py 文件运行,或粘贴到 Python 交互模式 # ======================================== PI = 3.14 r = 5 area = PI * r ** 2 print(area) # 输出:78.5
容器类常量(元组推荐)
以下代码含详细中文注释,可直接复制运行。建议对照输出理解每一行的作用。
# ========================================
# 示例:容器类常量(元组推荐)
# 说明:建议复制到 .py 文件运行,或粘贴到 Python 交互模式
# ========================================
# 用元组做常量,内部元素不可更改
SEX_LIST = ("男", "女")
# 列表常量存在被修改风险,不推荐
COLOR_LIST = ["red", "blue"]
print(SEX_LIST) # 输出:('男', '女')
print(COLOR_LIST)# 输出:['red', 'blue']
常量集中管理写法
以下代码含详细中文注释,可直接复制运行。建议对照输出理解每一行的作用。
# ======================================== # 示例:常量集中管理写法 # 说明:建议复制到 .py 文件运行,或粘贴到 Python 交互模式 # ======================================== # 全部常量统一放在文件头部 # 系统配置 VERSION = "1.0.5" DEBUG_MODE = False # 业务参数 MAX_CLASS_NUM = 20 PASS_SCORE = 60 print(VERSION, DEBUG_MODE, MAX_CLASS_NUM, PASS_SCORE) # 输出:1.0.5 False 20 60
禁止修改常量示范
以下代码含详细中文注释,可直接复制运行。建议对照输出理解每一行的作用。
# ======================================== # 示例:禁止修改常量示范 # 说明:建议复制到 .py 文件运行,或粘贴到 Python 交互模式 # ======================================== PRICE = 99 # 规范禁止操作:给常量重新赋值 PRICE = 199 print(PRICE) # 输出:199,代码无报错,但违反编码规范
实用场景
以下代码含详细中文注释,可直接复制运行。建议对照输出理解每一行的作用。
# ========================================
# 示例:实用场景
# 说明:建议复制到 .py 文件运行,或粘贴到 Python 交互模式
# ========================================
# 接口固定返回码常量
SUCCESS_CODE = 200
FAIL_CODE = 500
code = int(input("请输入状态码:"))
if code == SUCCESS_CODE:
res = "请求成功"
else:
res = "请求失败"
print(res)
# 输入200输出:请求成功;输入其他数字输出:请求失败
⚠️ 常见错误与正确对比
MaxNum = 100 # 大小写混合,不符合常量规范
📌 常量必须全部大写,多词用下划线分隔,不能驼峰、首字母大写。
max_num = 50 # 全小写,会被识别为普通变量
📌 小写命名代表动态变量,无法区分固定常量,降低代码可读性。
PI = 3.14 PI = 3.1415 # 运行中途修改常量
📌 常量约定定义后全程固定,重复赋值会造成数据混乱,维护困难。
INFO_LIST = ["张三","李四"]
INFO_LIST.append("王五") # 列表常量内部修改
📌 列表可变,即使命名为常量,内部数据仍能改动;固定集合推荐使用元组tuple。