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

Jas*_*n S 65 python naming-conventions

我正在尝试将一个非常简单的模块与一个.py源文件组合在一起,并且已经遇到了障碍.我打算调用它scons-configimport scons-config不能用Python.我找到了这个问题,并看了PEP8风格指南,但有点困惑,它没有谈论双字名称约定.

处理这个问题的正确方法是什么?

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

编辑:我确实看到"不鼓励使用下划线",这让我陷入了死胡同:我应该使用"sconsconfig"还是"scons_config"(我猜其他的已经出局了)?

Fel*_*ing 74

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

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

from scons.config import whatever
Run Code Online (Sandbox Code Playgroud)

会打破.

PEP 8清楚地描述了它:

包和模块名称

模块应具有简短的全小写名称. 如果提高可读性,则可以在模块名称中使用下划线 .Python 也应该有简短的全小写名称,但不鼓励使用下划线.

更新:

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

但说实话,我不认为如果你使用下划线,任何人都会责备你,你的代码将与任何一个决定一起运行.总是有一定的水平,你不应该关心的是多了.

  • @Jason S:好吧,如果可读性确实受到影响或者想到另一个名字,请使用它;)它只是*劝阻,不是禁止的. (8认同)
  • 我看到"不鼓励使用下划线",这让我陷入了死胡同. (7认同)
  • 示例:app_pool VS apppool (4认同)
  • 澄清一下,python 模块不鼓励使用下划线。python PACKAGES 不鼓励使用下划线。 (3认同)
  • "总有一定程度上你不应该再那么关心了." 确实如此,这些决定几乎总会产生影响,如果你是像我这样的初学者,这是令人生畏的.谢谢! (2认同)

Dan*_*nes 16

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

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

模块名称(即文件名)可以用下划线分解(我通常这样做,因为我讨厌namesthatruntogethersoyoucanhardlyreadthem).

坚持使用小写(每个PEP-8).这避免了从区分大小写到不区分大小写的文件系统时出现问题,反之亦然.


oso*_*maz 7

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

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

看看这个,最好的做法是避免使用大写和下划线,并将这些词汇合在一起,即sconsconfig.


Wai*_*ung 5

-是不行的。该符号用于减号运算符。大多数编程语言也是如此。使用_或不使用任何东西。