python: присваивание имени модулю, состоящему из двух слов - PullRequest
60 голосов
/ 17 мая 2010

Я пытаюсь собрать действительно простой модуль с одним исходным файлом .py, и он уже натолкнулся на препятствие. Я собирался назвать это scons-config, но import scons-config не работает в Python. Я нашел этот вопрос SO и посмотрел Руководство по стилю PEP8 , но я немного сбит с толку, он не говорит о соглашениях, состоящих из двух слов.

Как правильно с этим справиться?

  • имя модуля: SconsConfig? scons_config? sconsconfig? scons.config
  • имя одного файла .py в нем: scons-config.py? scons_config.py?

edit: Я видел "использование подчеркивания не рекомендуется", и это привело меня в тупик: я должен использовать "sconsconfig" или "scons_config" (я думаю, что другие отсутствуют)

Ответы [ 4 ]

69 голосов
/ 18 мая 2010

Если необходимо, всегда используйте подчеркивание _.

Использование точки . не сработает, иначе

from scons.config import whatever

сломается.

Но PEP 8 четко описывает это:

Имена пакетов и модулей

Модули должны иметь короткие, строчные имена . Подчеркивания можно использовать в имени модуля, если оно улучшает читабельность . Python пакеты должны также имеют короткие строчные имена, хотя использование символов подчеркивания обескуражен .

UPDATE:

Чтобы напрямую нацелить ваш вопрос: я думаю, что sconsconfig хорошо. Это не слишком долго и вполне читабельно.

Но, честно говоря, я не думаю, что кто-то будет винить вас, если вы используете подчеркивание, и ваш код будет работать с любым решением. Всегда существует определенный уровень, на котором вас не должно волновать , что больше.

16 голосов
/ 18 мая 2010

Во-первых, имя модуля совпадает с именем одного файла .py. В языке Python речь идет о наборе из нескольких файлов .py.

PEP-8 не рекомендует разбивать имена пакетов подчеркиванием. Быстрый пик в моем каталоге site-packages показывает, что имена из нескольких слов обычно просто запускаются вместе (например, setuptools, sqlalchemy)

Имена модулей (то есть имена файлов) могут быть разбиты символами подчеркивания (и я обычно так делаю, потому что я ненавижу имена, которые в общем и целом вы можете прочитать их).

Палка только в нижнем регистре (согласно PEP-8). Это позволяет избежать проблем при переходе от чувствительных к регистру файловых систем без учета регистра и наоборот.

6 голосов
/ 19 апреля 2016

Помимо PEP-8, вы также можете проверить, как нативные модули Python решают эту проблему.

Если бы вы сравнили родные модули Python 2 с с Python 3 , вы бы увидели, что новая тенденция с официальными разработчиками - избегать прописных и подчеркиваний. Например, ConfigParser в Python 2 становится configparser в Python 3.

Глядя на это, лучшим способом действий было бы избегать прописных и подчеркиваний и просто соединять слова вместе, то есть sconsconfig.

2 голосов
/ 18 мая 2010

- не ходи. Символ используется для оператора минус. То же самое верно для большинства языков программирования. Используйте _ или вообще ничего.

...