python:命名一个具有双字名称的模块

我试图把一个非常简单的模块与一个.py源文件放在一起,并且已经遇到了障碍。 我打算把它scons-config但是import scons-config在Python中不起作用。 我发现这个问题 ,看了PEP8的风格指南,但是有点困惑,它不谈论双字名称的约定。

什么是正确的方式来处理这个?

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

编辑:我确实看到“下划线的使用是不鼓励的”,并留下了我的死胡同:我应该使用“sconsconfig”或“scons_config”(我猜其他人都没有)?

如果必须,请始终使用下划线_

使用点. 甚至不会工作,否则

 from scons.config import whatever 

会打破。

但PEP 8清楚地描述了这一点:

封装和模块名称

模块应该有简短的,全小写的名字 。 如果提高可读性, 则可以在模块名称中使用 下划线 。 尽pipe不build议使用下划线 ,Python 也应该有简短的全小写名称。

更新:

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

但说实话,我不认为如果你使用下划线,任何人都会责备你,你的代码会随着决定而运行。 总是有一定的水平,你不应该那么在意了。

首先,模块名称与单个.py文件的名称相同。 在Python中,多个.py文件的集合就是一个包。

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

模块名称(也就是文件名)可能会被下划线分开(我通常这样做,因为我讨厌namesthatruntogethersoycancanhardreadreadm)。

坚持小写(每个PEP-8)。 从大小写敏感的文件系统到不区分大小写的文件系统,从而避免了问题,反之亦然。

除了PEP-8之外,您还可以查看本地Python模块如何处理这个问题。

如果您要比较Python 2的本地模块和Python 3的本地模块 ,您会发现官方开发人员的新趋势是避免使用大写和下划线。 例如,Python 2中的configparser在Python 3中变成了configparser

看着这个,最好的方法就是避免大写和下划线,只要将这些单词加在一起即sconsconfig

-是不行的。 符号用于减号运算符。 在大多数编程语言中也是如此。 使用_或者其他什么也没有。