Skip to main content
 首页 » 编程设计

python之为什么 math.pi 和 math.e 常量在 Python 中写成小写

2025年05月04日19mfryf

在大多数 Python 模块中,常量都是大写的,即:

datetime 模块:

  • datetime.MINYEAR
  • datetime.MINYEAR

locale 模块:

  • locale.LC_MONETARY
  • locale.LC_TIME
  • locale.DAY_1

os模块:

  • os.PRIO_PGRP
  • os.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 在下面的评论中提到的那样,添加符合准则的别名可能是个好主意。