Python基础入门 Day118 枚举(Enum)的使用与原理

85次阅读
没有评论

共计 1136 个字符,预计需要花费 3 分钟才能阅读完成。

在日常开发中,我们经常需要定义一些“固定值”,例如星期、状态码、方向等。这类值具有固定集合特征,用整数或字符串表示容易出错。Python 提供了 enum 模块来定义“枚举类型”,既能提高代码可读性,也能避免魔法数字的出现。

一、枚举的基本定义
使用 Enum 可以定义一组有名称的常量。例如:

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

此时 Color.REDColor.GREENColor.BLUE 分别是枚举成员,每个成员有名称和对应的值。

二、访问枚举成员
你可以通过多种方式访问枚举成员:

print(Color.RED)        # Color.RED
print(Color.RED.name)   # RED
print(Color.RED.value)  # 1

也可以通过值获取对应的枚举成员:

print(Color(2))  # Color.GREEN

三、遍历枚举成员
Enum 类支持遍历操作,可以使用 for 循环查看所有成员:

for color in Color:
    print(color.name, color.value)

输出结果:

RED 1
GREEN 2
BLUE 3

四、比较枚举成员
每个枚举成员是唯一的,不能直接用整数比较,但可以比较是否为同一个枚举:

if Color.RED == Color.RED:
    print(" 相同 ")

不同类型或不同值的枚举返回 False

五、枚举的自动赋值
可以使用 auto() 自动分配值:

from enum import Enum, auto

class Status(Enum):
    SUCCESS = auto()
    ERROR = auto()
    UNKNOWN = auto()

系统会自动分配连续整数(从 1 开始)。

六、枚举的实用技巧
在工程中,枚举非常适合表示固定集合,如:

class Direction(Enum):
    NORTH = 1
    SOUTH = 2
    EAST = 3
    WEST = 4

结合控制语句可提高代码可读性:

def move(direction):
    if direction == Direction.NORTH:
        print(" 向北移动 ")
    elif direction == Direction.SOUTH:
        print(" 向南移动 ")

七、枚举与字典的结合
枚举值可用作字典键,方便映射:

actions = {
    Direction.NORTH: "↑",
    Direction.SOUTH: "↓",
    Direction.EAST: "→",
    Direction.WEST: "←"
}
print(actions[Direction.EAST])  # 输出 →

八、小结
枚举的好处在于:

  1. 避免使用“魔法数字”;
  2. 增强代码语义;
  3. 更容易维护与扩展。

枚举是 Python 中非常优雅的结构,尤其在状态管理、配置定义、接口通信中能发挥重要作用。

正文完
 0
评论(没有评论)