【问题标题】:Naming convention for containers in the Python standard libraryPython 标准库中容器的命名约定
【发布时间】:2020-11-09 03:20:24
【问题描述】:

考虑 Python 标准库中用于不同类型 containers 的命名约定:

为什么有些方法遵循camel case,而其他方法如dequedefaultdict 却没有?这些方法有何不同之处可以解释这种差异?

如果是因为在某些时候约定发生了变化,那么模块为什么不呢?也为他们提供骆驼案例名称到旧名称的别名?

【问题讨论】:

标签: python python-3.x collections naming-conventions


【解决方案1】:

通常在python中,类名遵循“pascal”大小写约定,方法/函数遵循“snake”大小写约定。 但这里是来自https://www.python.org/dev/peps/pep-0008/的官方参考:

包和模块名称

模块应该是短的,全小写的 名字。如果改进,可以在模块名称中使用下划线 可读性。 Python 包也应该有简短的全小写字母 名称,尽管不鼓励使用下划线。

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

类名

类名通常应使用 CapWords 约定。

在以下情况下,可以使用函数的命名约定 该接口已记录在案并主要用作可调用对象。

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

【讨论】:

  • 谢谢,但defaultdict 似乎没有遵循这两种约定。 defaultdict 也是 type 类型。你如何用你的答案来解释这一点?
  • deque 怎么样? print(deque().__class__) -> <class 'collections.deque'>
  • 我刚刚更新了答案 - 原因是 deque() 是可调用的,因此按照惯例使用所有小写字母。打算实例化的类使用骆驼脚本约定。
  • 另外,dequeCounter 都是 type 类型和可调用对象。
  • 谢谢,当你说:“问问自己这个对象是否有效”operative 是什么意思?
猜你喜欢
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多