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

时间:2010-05-17 19:56:57

标签: python naming-conventions

我正在尝试将一个非常简单的模块与一个.py源文件组合在一起,并且已经遇到了障碍。我打算称之为scons-config,但import scons-config在Python中不起作用。我找到this SO question并查看了PEP8 style guide,但我有点困惑,它没有谈论双字名称惯例。

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

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

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

4 个答案:

答案 0 :(得分:68)

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

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

from scons.config import whatever

会破裂。

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

  

包裹和模块名称

     

模块应该有简短的全小写名称。可以使用下划线         在模块名称中,如果提高可读性。 Python 应该         虽然使用下划线,但也有简短的全小写名称         泄气

<强>更新

直接针对您的问题:我认为sconsconfig没问题。它不是太长,而且非常易读。

但老实说,如果您使用下划线,我认为没有人会责怪您,而您的代码将以任何一个决定运行。总有一定程度的你不应该再关心 了。

答案 1 :(得分:15)

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

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

模块名称(即文件名)可能会被下划线分解(我通常这样做,因为我讨厌namesthatruntogethersoyoucanhardlyreadthethethe)。

仅限小写(每个PEP-8)。这可以避免从区分大小写到不区分大小写的文件系统时出现问题,反之亦然。

答案 2 :(得分:6)

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

如果您要将the native modules of Python 2that of Python 3进行比较,您会发现官方开发人员的新趋势是避免使用大写和下划线。例如,Python 2中的ConfigParser在Python 3中变为configparser

考虑到这一点,最好的做法是避免使用大写和下划线,只需将单词加在一起,即sconsconfig

答案 3 :(得分:2)

-是不行的。该符号用于减运算符。在大多数编程语言中也是如此。使用_或其他任何内容。