我正在尝试将一个非常简单的模块与一个.py源文件组合在一起,并且已经遇到了障碍。我打算称之为scons-config
,但import scons-config
在Python中不起作用。我找到this SO question并查看了PEP8 style guide,但我有点困惑,它没有谈论双字名称惯例。
解决这个问题的正确方法是什么?
编辑我确实看到“不鼓励使用下划线”,这让我陷入了死胡同:我应该使用“sconsconfig”还是“scons_config”(我想其他的都是)?
答案 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 2与that of Python 3进行比较,您会发现官方开发人员的新趋势是避免使用大写和下划线。例如,Python 2中的ConfigParser
在Python 3中变为configparser
。
考虑到这一点,最好的做法是避免使用大写和下划线,只需将单词加在一起,即sconsconfig
。
答案 3 :(得分:2)
-
是不行的。该符号用于减运算符。在大多数编程语言中也是如此。使用_
或其他任何内容。