在大多数 Python 模块中,常量都是大写的,即:
datetime 模块:
datetime.MINYEARdatetime.MINYEAR
locale 模块:
locale.LC_MONETARYlocale.LC_TIMElocale.DAY_1
os模块:
os.PRIO_PGRPos.PRIO_USER
但是在math模块中,仅有的2个常量是小写的: math.pi 和 math.e。
如果 math 模块是第三方库,这可以解释,但它不是,它是标准库的一部分。
是的,我知道在 Python 中没有真正的常量,但正如 PEP 8 所说,这是大多数模块中使用的样式编写
那么,为什么这两个常量在 Python 中不写成大写呢?有什么理由吗?
请您参考如下方法:
PEP 8创建于 05-Jul-2001,而这些常量至少自 1990 年以来就存在,如 this initial revision 中所示math 模块实现。 tobias_k在他的评论中做了一个很好的猜测恕我直言,从数学家的角度来看,这种情况下的小写字母似乎更自然。另一个可能的原因是 Python 是 heavily influenced由 ABC 编程语言编写,其中 pi 也是小写字母 ( reference )。
我仍然认为你是对的,这与普遍接受的编码风格规则(现在是这样)不一致,不仅存在于 Python 中。
另请注意,这不是唯一的不一致,PEP 8还提到 threading 模块在函数名称方面不符合指南:
mixedCase is allowed only in contexts where that's already the prevailing style (e.g. threading.py), to retain backwards compatibility.
不解决这个问题的明显原因是,正如 jonrsharpe 所指出的那样在他的评论中,PEP 8 中也提到了:
In particular: do not break backwards compatibility just to comply with this PEP!
正如 OP 在下面的评论中提到的那样,添加符合准则的别名可能是个好主意。
