常量

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。