Jas*_*n S 65 python naming-conventions
我正在尝试将一个非常简单的模块与一个.py源文件组合在一起,并且已经遇到了障碍.我打算调用它scons-config但import scons-config不能用Python.我找到了这个问题,并看了PEP8风格指南,但有点困惑,它没有谈论双字名称约定.
处理这个问题的正确方法是什么?
编辑:我确实看到"不鼓励使用下划线",这让我陷入了死胡同:我应该使用"sconsconfig"还是"scons_config"(我猜其他的已经出局了)?
Fel*_*ing 74
如果必须,请始终使用下划线_.
使用点.甚至不起作用,否则
from scons.config import whatever
Run Code Online (Sandbox Code Playgroud)
会打破.
但PEP 8清楚地描述了它:
包和模块名称
模块应具有简短的全小写名称. 如果提高可读性,则可以在模块名称中使用下划线 .Python 包也应该有简短的全小写名称,但不鼓励使用下划线.
更新:
直接针对你的问题:我认为没问题sconsconfig.它不是太长,而且非常易读.
但说实话,我不认为如果你使用下划线,任何人都会责备你,你的代码将与任何一个决定一起运行.总是有一定的水平,你不应该关心的是多了.
Dan*_*nes 16
首先,模块名称与单个.py文件的名称相同.在Python中,几个.py文件的集合是一个包.
PEP-8不鼓励用下划线分解包名.我的site-packages目录中的快速峰值显示多字名称通常只是一起运行(例如,setuptools,sqlalchemy)
模块名称(即文件名)可以用下划线分解(我通常这样做,因为我讨厌namesthatruntogethersoyoucanhardlyreadthem).
坚持使用小写(每个PEP-8).这避免了从区分大小写到不区分大小写的文件系统时出现问题,反之亦然.
除了PEP-8之外,您还可以查看本机Python模块如何处理此问题.
如果你要比较的Python 2的本机模块到了Python 3,你会看到与官方开发者的新趋势是避免大写和下划线.例如,ConfigParser在Python 2中变为configparserPython 3.
看看这个,最好的做法是避免使用大写和下划线,并将这些词汇合在一起,即sconsconfig.