You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:02:36