编程学习网 > 编程语言 > Python > 别再用手动维护常量了,Python 的这个枚举类,让你的代码更规范!
2026
07-18

别再用手动维护常量了,Python 的这个枚举类,让你的代码更规范!


不瞒你说,我以前写代码特别爱用数字当常量。比如用户状态用 0 表示未激活,1 表示正常,2 表示已注销。代码里到处都是 if user.status == 1: 这种判断。后来同事接手代码,天天问我 1 代表啥,2 又代表啥。我只能说“你自己看注释”。其实注释早被改漏了,谁还记得当时咋写的。

有一次在写订单状态时,我用了 0 表示待支付,1 表示已支付,2 表示已退款。结果删代码时不小心把 1 和 2 的顺序搞反了。测试的时候发现支付成功的订单全部显示已退款,吓得我赶紧滚了个版本。那之后我就在想,手动维护常量太累了,而且容易出错。

其实 Python 早就给了我们解决方案,那就是枚举类。枚举就是把一组相关的常量组织在一起,每个常量都有一个名字和一个值。比如上面那个用户状态,用枚举写就是这样的

from enum import Enum
class UserStatus(Enum):
    INACTIVE = 0
    ACTIVE = 1
    CANCELLED = 2

之后判断时就直接写 if user.status == UserStatus.ACTIVE: 别人一看就知道 ACTIVE 是激活状态,根本不用翻注释。而且枚举值不能重复,名字也不能重复,想改值必须通过类来改。这从根本上杜绝了手抖写错数字的问题。

还有个好处你可能想不到。枚举支持迭代,你可以循环所有状态。比如写个下拉菜单,直接把枚举的所有成员转成选项。不用再手动写一个列表,每次加状态还得改两个地方。

枚举也支持比较。两个枚举成员可以用等号判断是否相等,但不能跟普通数字混淆。比如 UserStatus.ACTIVE == 1 会返回 False。这逼着你必须用枚举去比较,代码规范度一下子就上来了。

有人觉得枚举写起来麻烦,多写几个类而已。但想想后期维护的成本,一个数字常量出错的代价,往往比写枚举的时间大得多。特别是项目变大,状态变多,枚举的价值就体现出来了。

建议你把代码里常见的那些 0 1 2 3,还有字符串常量,都换成枚举。刚开始改的时候可能不习惯,改完你会发现代码清晰了很多。别人看你的代码不用猜数字代表什么,自己也不会再因为改错值而慌张回滚。这大概就是枚举带来的最大好处吧。

以上就是“别再用手动维护常量了,Python 的这个枚举类,让你的代码更规范!的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取