page contents

别再if x=="A"了!python枚举这样用,代码可读性直接拉满

枚举是在python中比较冷门的知识点,就像学校里那种低调又不惹眼的学生,参加任何活动总是不能第一时间想到他们。但是这不代表他们没有能力,不能独当一面,恰恰相反,某些场合他们会发挥让人意想不到的能量。今天讲的就是 枚举 在python开发中的绝对领域,在这个场景设计下应该没有比它更合适的了。

attachments-2025-06-eeWxFhMv6840fffae839a.png枚举是在python中比较冷门的知识点,就像学校里那种低调又不惹眼的学生,参加任何活动总是不能第一时间想到他们。但是这不代表他们没有能力,不能独当一面,恰恰相反,某些场合他们会发挥让人意想不到的能量。今天讲的就是 枚举 在python开发中的绝对领域,在这个场景设计下应该没有比它更合适的了。

一、什么是枚举

基础写法

既然说到 枚举,我们不能不认识它,首先要了解它,下面就是 枚举 在python中的基础用法。

from enum import Enum

class Color(Enum):

    RED = 1

    YELLOW = 2

    BLUE = 3



# Color.RED

print(Color.RED)枚举 在其他语言中,基本都是可以直接书写,但在python必须 导入enum模块 才可以使用,这也是它在python中被冷遇的一个重要原因。

获取枚举值

可以看到,当我们 print(Color.RED) 时,输出的内容是与 枚举相对应,但其实它也代表了我们定义的 数字1。

# 1

print(Color.RED.value)在其他语言中,枚举的值可以直接代表 相对应的值,但在python中,我们获取值必须使用 Color.RED.value 的方式。

自动设置值

枚举 中的值其实可以自动设置,并非必须要设定:

from enum import Enum, auto



class Color(Enum):

    RED = auto()

    YELLOW = auto()

    BLUE = auto()



# 1

print(Color.RED.value)

# 2

print(Color.YELLOW.value)使用了 auto(),枚举的值将自动递增,非常方便。

以上就是 枚举 的基本信息了,了解这些知识就足够应付绝大部分场景,接下来我们就看看枚举的绝对领域是什么?

二、枚举的绝对领域

接下来就是 枚举 的实战场景了,除了 枚举 还真没什么比它更合适的了。

我们现在有一笔购物订单,它有 九个 状态分别是:

1. 已创建

2. 待支付

3. 已支付

4. 已接单

5. 已发货

6. 已送达

7. 已完成

8. 已取消

9. 已退款

这么多状态我们该怎么接收呢,可以用什么类型呢?

用数字整型

很多人会想到第一种方式就是数字整型,用 九个数字 不就可以代表了,现在我们用 0~8 依次代表上面九个状态,那么请问下面这个状态代表什么:

order_status = 5你能立刻通过数字获悉当前状态吗?这恐怕需要废点功夫,因此数字并不是最合适的选择。

用字符串

那我们现在直接用字符串来代表不也很合适,现在我们用下面的对应关系:

状态 字符串 

已创建 Created 

待支付 PaymentPending 

已支付 Paid 

已接单 OrderTaking 

已发货 Shipped 

... ... 

很好,现在每个订单状态和字符串一一对应,这总能一眼认出吧。但是现在问题是,字符串并没有 智能提示 功能,如果手打单词有可能出现错误:

order_status = 'Create'由于我们 单词拼写与设定的不一致,由此导致订单判断失败,所以字符串也不合适。

用枚举

所以现在就是我们枚举上场的时候了,它就能同时解决上面两个类型带来的问题。

from enum import Enum, auto



class OrderStatus(Enum):

    CREATED = auto()

    PAYMENT_PENDING = auto()

    PAID = auto()

    ORDER_TAKING = auto()

    SHIPPED = auto()

    ...使用枚举时,不仅能够直接 通词达意,而且最重要的是可以 代码智能提示,因此在大部分情况下不会出现 输入单词出错 的问题。

在使用 枚举 时习惯用 全部大写+下划线 来设计。

三、总结

在python中,各种语法,关键字都不是平白无故设计的,每一个都有它特定的使用场景,即使你平常不使用它,但到特定开发场景下,总有它的一席之地。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-06-05 10:25
  • 阅读 ( 47 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1303 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2140 文章
  3. Pack 1303 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章