当我们书写代码进行条件判断时,常会书写出以下类似的代码:
def foo(num):
if num ==11:
do_something()
if num ==22:
do_otherthing()
但是有没有想过,当我们把代码提交给别人时,如何做到让其他人能够快速准确的知道11,22这些数值面值代表的意思呢?
1.最直接的方式在数值面值处添加注释,但这显然不是提升代码可读性的最佳方式
2.采用枚举(enum)--enum
是 Python 自 3.4 版本引入的内置模块,如果你使用的是更早的版本,可以通过 pip install enum34
来安装它。下面是使用枚举的样式代码:
from enum improt IntEnum
class CommentsTOFeatured(IntEnum):
FROM_WEBSITE = 11
FROM_CLIENT = 22
def foo(num):
if num==CommentsToFeatured.FROM_WEBSITE:
do_something()
if num==CommentsToFeatured.FROM_CLIENT:
do_otherthing()
试想一下,如果你在某个分支判断时将 11
错打成了 111
会怎么样?我们时常会犯这种错,而这类错误在早期特别难被发现。将这些数字字面量全部放入枚举类型中可以比较好的规避这类问题。类似的,将字符串字面量改写成枚举也可以获得同样的好处。
使用枚举类型代替字面量的好处:
- 提升代码可读性:所有人都不需要记忆某个神奇的数字代表什么
- 提升代码正确性:减少打错数字或字母产生 bug 的可能性