Python标准库中容器的命名约定

11
考虑Python标准库中不同类型容器的命名约定:
为什么有些方法遵循驼峰命名法,但其他方法如deque和defaultdict却不是?这些方法在某种程度上有何不同,可以解释这种差异吗?
如果是因为约定在某个时候发生了变化,那么为什么模块不会将它们与旧名称一样提供驼峰式别名呢?


1个回答

11
通常在Python中,类名遵循“帕斯卡”命名法,方法/函数则遵循“下划线”命名法。但这里有一个来自https://www.python.org/dev/peps/pep-0008/的官方参考文献:

包和模块名称

模块名称应该是短小的、全小写的名称。如果下划线提高了可读性,可以在模块名称中使用下划线。Python包的名称也应该是短小的、全小写的名称,尽管不鼓励使用下划线。

当一个用C或C++编写的扩展模块有一个配套的Python模块,提供了更高级别(例如更面向对象)的接口时,C/C++模块会有一个前导下划线(例如_socket)。

类名

类名通常应该使用CapWords约定。

当接口被记录并且主要用作可调用对象时,可以改用函数的命名约定。

请注意,内置名称有单独的约定:大多数内置名称都是单词(或两个单词连在一起),CapWords约定仅用于异常名称和内置常量。


1
deque怎么样?print(deque().__class__) -> <class 'collections.deque'> - Jan Stránský
1
此外,dequeCounter都是type类型的可调用对象。 - Josh
1
谢谢,当你说:“问问自己这个对象是否有效”时,“有效”是什么意思? - Josh
我所说的“operative”是指——如果您将其用作函数(例如,deque()用于弹出和推入对象),或仅用于存储数据(例如,UserList,仅具有“data”属性)。在我看来,Counter是功能性的,但我认为它是大写的,因为它主要用于存储数据。 - Michael
@Josh - 如果我的回答解决了你的问题,我会非常感激如果你考虑接受它作为答案。干杯。 - Michael
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接