Python无语法常量,变量动态可变且类型由值决定;常量靠全大写命名约定、模块级定义及工具检查实现,不可变对象不等于常量。

Python中没有语法层面的“常量”概念,所有变量都可重新赋值;但通过命名约定和编程规范,可以清晰地区分哪些变量应被视为常量。
变量:动态、可变、无需声明类型
Python变量本质上是对象的引用,赋值即绑定名称到对象。变量不需要提前声明类型,类型由所赋的值决定,且可在运行时改变。
- 赋值即创建:第一次给名字赋值(如 x = 10)就创建了变量 x,指向整数对象 10
- 类型动态变化:后续可赋不同类型的值(x = "hello"),x 就转而引用字符串对象
- 内存自动管理:当变量不再被引用,对应对象可能被垃圾回收,无需手动释放
常量:靠约定,非强制,靠自律与工具辅助
Python不提供 const 或 final 关键字。所谓“常量”,是开发者约定俗成地用全大写加下划线命名,并在逻辑上保证其值不被修改。
- 命名规范:如 PI = 3.14159、MAX_RETRY = 3、DATABASE_URL = "sqlite:///app.db"
- 模块级惯例:通常把常量集中定义在模块顶层(如 config.py),方便复用和统一管理
- 静态检查支持:工具如 pylint 可检测对全大写变量的意外重新赋值(提示 C0103 或 W0622),增强约束力
进阶做法:模拟不可变常量(谨慎使用)
若需更强的保护,可通过技术手段限制修改,但会增加复杂度,一般项目中不推荐过度使用。
云点滴客户解决方案是针对中小企业量身制定的具有简单易用、功能强大、永久免费使用、终身升级维护的智能化客户解决方案。依托功能强大、安全稳定的阿里云平 台,性价比高、扩展性好、安全性高、稳定性好。高内聚低耦合的模块化设计,使得每个模块最大限度的满足需求,相关模块的组合能满足用户的一系列要求。简单 易用的云备份使得用户随时随地简单、安全、可靠的备份客户信息。功能强大的报表统计使得用户大数据分析变的简单,
立即学习“Python免费学习笔记(深入)”;
- 使用 @property + 私有属性:在类中封装,只提供只读访问接口
- 冻结数据类(from dataclasses import dataclass + frozen=True):适合一组相关常量组成的结构体
- 自定义模块 __setattr__:极少数场景下重写模块级属性设置逻辑(易出错,维护成本高)
关键提醒:别混淆“不可变对象”与“常量”
字符串、元组、数字等是不可变对象(immutable),但这不等于它们是常量——你仍可让变量指向新对象:
- name = "Alice" → 后续 name = "Bob" 是合法的(只是换了个引用)
- t = (1, 2) → t = (3, 4) 也完全没问题;真正不可变的是元组内容,不是变量本身









