我注意到现在许多库似乎更喜欢使用字符串而不是枚举类型变量作为参数。
人们以前会在哪里使用枚举,例如dateutil.rrule.FR 对于星期五,似乎已经转向使用字符串(例如 'FRI')。
在 numpy(或 pandas)中也是如此,其中 searchsorted 例如使用字符串(例如 side='left',或 side=' right') 而不是定义的枚举。为避免疑义,在 python 3.4 之前,这可以很容易地实现为枚举:
class SIDE:
RIGHT = 0
LEFT = 1
而且枚举类型变量的优点很明显:你不能拼错它们而不会引发错误,它们为 IDE 等提供了适当的支持。
那么为什么要使用字符串而不是坚持使用枚举类型呢?这不会使程序更容易出现用户错误吗?这不像枚举会产生开销——如果有的话,它们应该稍微更有效率。那么,这种范式转变是何时以及为何发生的?
最佳答案
我认为枚举更安全,尤其是对于具有多个开发人员的大型系统。
一旦需要更改此类枚举的值,在许多地方查找和替换字符串并不是我的乐趣:-)
恕我直言,最重要的标准是用法:对于在模块甚至包中使用字符串似乎没问题,在公共(public) API 中我更喜欢枚举。
关于python - 枚举与字符串作为函数中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27841823/