Python 包命名规范

65 投票
7 回答
56567 浏览
提问于 2025-04-15 22:02

在Python中有没有类似于Java那种的包命名规则,比如Java的 com.company.actualpackage 这种形式?我发现大多数时候,Python的包名都很简单,有可能会重复,比如 "web"。

如果没有这样的规则,那是为什么呢?你觉得在Python中使用Java的命名规则怎么样?

7 个回答

19

Java的命名规则也有一些缺点。并不是每个开源包都有一个稳定的网站支持。如果维护者的网站发生了变化,他们该怎么办呢?另外,按照这种命名方式,包的名字会变得很长,记起来也很困难。最后,包的名字应该反映它的用途,而不是它的拥有者。

20

给其他有需要的人更新一下信息:

到2012年,PEP 423 解决了这个问题。PEP 8 也简单提到了一下这个话题,但只是说:名字要全小写或者用下划线。

简单来说:选择一些容易记住、有意义的名字,并且这些名字在PyPI上不能已经被使用过。

48

Python有两个很重要的原则,能帮助我们理解这个话题:

明确比隐含要好。

还有:

命名空间是个非常棒的主意——我们应该多用它!

关于模块的命名和导入,有一些约定可以在Python风格指南(PEP 8)中找到。

没有像Java那样强制在模块名前加前缀的原因,主要是因为这样会导致代码中出现很多重复的内容,而这些内容其实是没必要的。

Java的一个问题就是它总是让你重复自己,代码中有很多冗余的部分,而这些在Python中是没必要的。(比如说获取器和设置器就是一个很好的例子。)

在Python中,命名空间的问题不大,因为你可以在导入模块时给它起个别名。例如:

import com.company.actualpackage as shortername

这样一来,你不仅可以在程序中创建或操作命名空间,还可以创建自己的快捷别名,省去很多打字的麻烦。

撰写回答