Python中常量与变量的区别:为何不用固定变量替代常量?
Python常量相关问题解答
1. 能不能用“不修改的变量”替代常量?
Python本身没有语法层面的真正常量,所有所谓的“常量”本质都是约定不修改的变量。但直接用普通变量替代有明显风险:
- 没有任何强制约束,只要你愿意,随时可以修改这个变量的值,解释器不会拦你,不小心误改就会引发难以排查的bug。
- 如果你想实现更接近“常量”的效果,可以用这些方式:
- 用
enum.Enum定义枚举类,枚举成员默认不可修改:from enum import Enum class Config(Enum): MAX_LIMIT = 100 DEFAULT_TIMEOUT = 30 # 尝试修改会报错 # Config.MAX_LIMIT = 200 # AttributeError: Cannot reassign members. - 用类属性结合
@property,让修改操作抛出异常:class Constants: _MAX_LIMIT = 100 @property def MAX_LIMIT(self): return self._MAX_LIMIT const = Constants() # 尝试修改会报错 # const.MAX_LIMIT = 200 # AttributeError: can't set attribute
- 用
2. 全大写命名的核心作用是什么?
全大写命名(比如MAX_LIMIT)的核心作用就是给其他开发者明确的提示:这个值是固定的,不应该被修改。这是Python官方PEP8编码规范里的约定,本质是一种“契约式编程”的手段——因为Python没有语法强制的常量,所以靠命名规范来约束团队协作中的行为。
当然,你硬要修改全大写的变量,Python也不会阻止你,但遵守这个约定能大幅降低团队协作时的误改风险,这也是这种命名方式的核心价值。
内容的提问来源于stack exchange,提问作者Physics
相关产品推荐
相关产品推荐

