python - 枚举与字符串作为函数中的参数

标签 python numpy coding-style

我注意到现在许多库似乎更喜欢使用字符串而不是枚举类型变量作为参数。

人们以前会在哪里使用枚举,例如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/

相关文章:

c# - 为什么要通过变量引用事件?

python : get all exe files in current directory and run them?

python - FileNotFoundError : [Errno 2] No such file or directory: 'tinycss2\\VERSION'

python - Tweepy - 打印所有用户对象的所有字段

python - 线性拟合,包括 NumPy/SciPy 的所有错误

java - 测试调用具有不同参数类型的同一类的相似方法的方法的最佳实践是什么?

python - 在 Django/Django Rest 中添加两因素身份验证

python - 如何删除 % NAN 高于某个数字的 float 功能?

python - 线性回归模型

php - 项目编码标准与单元测试代码覆盖率冲突怎么办?