python:命名具有两个单词名称的模块


69

我正在尝试将一个非常简单的模块与一个.py源文件放在一起,并且已经遇到了障碍。我本来要调用它,scons-configimport scons-config在Python中不起作用。我发现了这个问题,然后看了PEP8样式指南,但有点困惑,它没有谈论两个单词的名称约定。

解决这个问题的正确方法是什么?

  • 模块名称:SconsConfig?scons_config?sconsconfig?scons.config?
  • 其中单个.py文件的名称:scons-config.py?scons_config.py?

编辑:我确实看到“不鼓励使用下划线”,这使我陷入困境:我应该使用“ sconsconfig”还是“ scons_config”(我想其他的都淘汰了)?


1
一个.py是一个模块……
Felix Kling 2010年

Answers:


81

如果需要,请始终使用下划线 _

使用点.甚至不起作用,否则

from scons.config import whatever

会破裂。

但是PEP 8清楚地描述了它:

软件包和模块名称

模块应使用简短的全小写名称。 如果模块名称可以提高可读性,则可以在模块名称中使用下划线 。尽管不鼓励使用下划线,但Python软件包也应使用短小写全名。

更新:

直接针对您的问题:我认为sconsconfig很好。它不太长,可读性很强。

但老实说,如果您使用下划线,并且任何决定都可以使您的代码运行,我认为没有人会责备您。总是有一定的水平,你不应该关心的是多了。


8
我看到“不鼓励使用下划线”,这使我陷入困境。
杰森·S

8
@Jason S:好吧,如果可读性确实受到影响或想起另一个名称,请使用它;)劝阻而不是禁止使用。
菲利克斯·克林

3
“总会有一个级别,您不再需要那么在意。” 是的,但是对于此类决策几乎总会有后果,如果您是像我这样的初学者,那将是令人生畏的。谢谢!
杰森·S

5
示例:app_pool VS apppool
Rockallite

3
为了澄清起见,不建议在python MODULES下划线。不鼓励使用下划线作为python软件包。
cowlinator

19

首先,模块名称与单个.py文件的名称相同。用Python来说,一个包是几个.py文件的集合。

PEP-8不鼓励使用下划线分隔软件包名称。我的site-packages目录中的一个快速峰显示,多字名称通常只是一起运行(例如,setuptools,sqlalchemy)

模块名称(即文件名)可能会用下划线分隔(我通常这样做是因为我讨厌那些在一起运行的名称,因此您几乎无法阅读它们)。

仅使用小写字母(按照PEP-8)。当从区分大小写的文件系统变为不区分大小写的文件系统时,这可以避免出现问题,反之亦然。


9

除了PEP-8,您还可以查看本机Python模块如何处理此问题。

如果你要比较的Python 2的本机模块了Python 3,你会看到与官方开发者的新趋势是避免大写和下划线。例如,ConfigParser在Python 2中变成configparser在Python 3中。

鉴于此,最好的做法是避免大写和下划线,而只是将单词结合在一起,即sconsconfig


2

-不行。该符号用于减号运算符。在大多数编程语言中也是如此。使用_或完全不使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.