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

Python枚举值唯一性校验:@verify(UNIQUE)与@unique的区别及性能选择

Python枚举:@unique与@verify(UNIQUE)的区别及性能对比

核心区别

1. 来源与依赖

  • @unique是Python标准库enum模块原生提供的装饰器,无需额外安装第三方包,开箱即用。
  • @verify(UNIQUE)来自第三方增强枚举库aenum,需要先通过pip install aenum安装后才能使用。

2. 功能定位

  • @unique是单一功能工具:仅负责检查枚举成员的值是否唯一,检测到重复值时直接抛出ValueError。
  • @verify(UNIQUE)是aenum验证框架的一部分:除了值唯一性检查,还支持与其他验证规则(如名称唯一性、自定义验证逻辑)组合使用,扩展性更强,适合复杂场景的枚举校验。

3. 报错类型

  • 使用@unique时,重复值会触发标准库的ValueError。
  • 使用@verify(UNIQUE)时,重复值会触发aenum库的VerificationError。

性能对比

如果仅需要确保枚举值唯一,@unique的性能更优:

  • @unique的实现逻辑极简,仅在枚举类创建时遍历成员值,用集合记录已出现的值,无额外框架开销。
  • @verify(UNIQUE)属于aenum的验证体系,需要适配框架的初始化流程,会带来少量性能损耗。

适用场景

  • 优先选@unique:仅需值唯一性校验、依赖标准库、追求性能的场景。
  • 可选@verify(UNIQUE):需要多维度验证(如同时检查名称和值)、使用aenum其他增强功能的场景。

代码示例

标准库@unique用法

from enum import Enum, unique

@unique
class Status(Enum):
    ACTIVE = 1
    INACTIVE = 2
    DISABLED = 1  # 执行时抛出 ValueError: duplicate values found in <enum 'Status'>: DISABLED -> ACTIVE

aenum的@verify(UNIQUE)用法

from aenum import Enum, verify, UNIQUE

@verify(UNIQUE)
class Status(Enum):
    ACTIVE = 1
    INACTIVE = 2
    DISABLED = 1  # 执行时抛出 VerificationError: duplicate value found for 'DISABLED' (1)

内容的提问来源于stack exchange,提问作者Yuval Pruss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:42:13