为什么Python中的math.pi和math.e常量用小写表示?
在大多数Python模块中,常量通常是用大写字母书写的,比如:
datetime
模块:
datetime.MINYEAR
datetime.MINYEAR
locale
模块:
locale.LC_MONETARY
locale.LC_TIME
locale.DAY_1
os
模块:
os.PRIO_PGRP
os.PRIO_USER
但是在math
模块中,只有两个常量是用小写字母书写的:math.pi
和math.e
。
如果math
模块是一个第三方库,这种情况可能可以解释,但它并不是,它是标准库的一部分。
是的,我知道在Python中并没有真正的常量,但这种书写风格在大多数模块中都是如此,正如PEP 8所说的那样。
那么,为什么这两个常量在Python中不是用大写字母书写的呢?这有什么原因吗?
2 个回答
你可以提个建议,让math.e
和math.pi
有大写的别名。
因为在数学中,e和pi都是小写的,所以我建议用math.LOWERCASE_E
和math.LOWERCASE_PI
。
PEP 8 是在2001年7月5日创建的,而这些常量至少在1990年就已经存在了,大家可以在这个初始版本的math
模块实现中看到。tobias_k在他的评论中做了一个不错的猜测,我认为从数学家的角度来看,使用小写字母似乎更自然。另一个可能的原因是,Python受到了ABC编程语言的强烈影响,在ABC中,pi
也是小写的(参考)。
不过,我觉得你说得对,这在目前普遍接受的编码风格规则中确实存在不一致的地方,这种情况不仅在Python中出现。
还要注意,这并不是唯一的不一致,PEP 8还提到threading
模块在函数名称方面与指导方针不一致:
混合大小写只在已经是主流风格的上下文中允许(例如,threading.py),以保持向后兼容性。
显而易见,不去修正这个问题的原因是,正如jonrsharpe在他的评论中提到的,PEP 8中也提到过:
特别是:不要为了遵循这个PEP而破坏向后兼容性!
可能添加一些符合指导方针的别名是个好主意,正如OP在下面的评论中提到的那样。