我在 Python 中有一个枚举,我想确保它的值是唯一的。我发现有两种方法可以实现它:
@verify(UNIQUE)
@unique
使用它们中的每一个有什么区别?我应该使用哪一个才能获得最佳性能?
他们都是正确的。
enum模块提供了
@unique
装饰器来维护和实现唯一性:
专门用于枚举的类装饰器。它搜索枚举的 members
而 EnumCheck 的
@verify(UNIQUE)
装饰器具有相同的用途。
因为这些类装饰器只是检查值是否重复,就像
的情况一样@unique
class Days(Enum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
THURSDAY = 2 # ValueError: duplicate values found in <enum 'Days'>: THURSDAY -> TUESDAY
并且你只有有限数量的元素,任何可能的性能差异很可能都是可以忽略不计的,并且Python版本的正确情况在下一个版本中可能是错误的,所以如果我是你,我不会太担心性能这个特定的功能。
但是,如果您仍然好奇,那么您可以生成两个巨大的 Python 文件,其中包含 1000 个枚举,每个枚举有 10000 个值。如果你单独评估它们的性能,它们只是装饰器不同,那么你可以进行比较。