我应该使用哪一个来检查Python中枚举值的唯一性?

问题描述 投票:0回答:1

我在 Python 中有一个枚举,我想确保它的值是唯一的。我发现有两种方法可以实现它:

  • @verify(UNIQUE)
  • 结束课程
  • @unique
  • 结束课程

使用它们中的每一个有什么区别?我应该使用哪一个才能获得最佳性能?

python python-3.x enums
1个回答
0
投票

他们都是正确的。

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 个值。如果你单独评估它们的性能,它们只是装饰器不同,那么你可以进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.