【问题标题】:python: naming a module that has a two-word namepython:命名具有两个单词名称的模块
【发布时间】:2010-05-17 19:56:57
【问题描述】:

我正在尝试将一个非常简单的模块与一个 .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”(我猜其他的已经出局了)?

【问题讨论】:

  • 单个.py 是一个模块...
  • 而文件夹就是一个包,应该全部小写,不带下划线。

标签: python naming-conventions


【解决方案1】:

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

使用点. 甚至都行不通,否则

from scons.config import whatever

会坏掉。

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

包和模块名称

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

更新:

直接针对您的问题:我认为sconsconfig 很好。它不是太长而且可读性很强。

但老实说,如果您使用下划线,我认为没有人会责怪您,并且您的代码将根据任一决定运行。总有一个层次,你不应该再关心那个了。

【讨论】:

  • 我看到“不鼓励使用下划线”,这让我陷入了死胡同。
  • @Jason S:好吧,如果可读性确实受到影响,或者考虑其他名称,请使用它;)不鼓励,而不是禁止。
  • “总有一个层次,你不应该再关心那么多了。”没错,但这些决定几乎总是会产生后果,如果你是像我这样的初学者,那就太可怕了。谢谢!
  • 例子:app_pool VS apppool
  • 澄清一下,python MODULES 不鼓励使用下划线。 python PACKAGES 不鼓励使用下划线。
【解决方案2】:

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

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

模块名称(即文件名)可能会被下划线分隔(我通常会这样做,因为我讨厌名称混在一起所以你很难读懂它们)。

仅使用小写字母(根据 PEP-8)。这避免了从区分大小写文件系统到不区分大小写文件系统时出现的问题,反之亦然。

【讨论】:

    【解决方案3】:

    除了 PEP-8,您还可以查看原生 Python 模块如何处理此问题。

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

    看这个,最好的做法是避免使用大写和下划线,只需将这些词连接在一起,即sconsconfig

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 2015-11-23
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        • 2018-09-04
        相关资源
        最近更新 更多