Python: имя модуля, имеющего имя из двух слов
Я пытаюсь собрать действительно простой модуль с одним .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" (я думаю, )?
Ответы
Ответ 1
Если вам нужно, всегда используйте символы подчеркивания _
.
Использование точки .
даже не будет работать, иначе
from scons.config import whatever
сломается.
Но PEP 8 четко описывает это:
Имена пакетов и модулей
Модули должны иметь короткие, все строчные имена. Подчеркивание может использоваться в имени модуля, если он улучшает читаемость. Пакеты Python должны также имеют короткие имена с прописными буквами, хотя использование подчеркиваний обескуражен.
UPDATE:
Чтобы прямо настроить ваш вопрос: я думаю, что sconsconfig
в порядке. Это не слишком долго и вполне читаемо.
Но, честно говоря, я не думаю, что кто-то будет обвинять вас, если вы используете подчеркивания, и ваш код будет работать с любым решением. Всегда есть определенный уровень, где вам больше не нужно заботиться.
Ответ 2
Во-первых, имя модуля совпадает с именем одного файла .py. В Python-talk набор из нескольких файлов .py - это пакет.
PEP-8 препятствует разбиению имен пакетов на символы подчеркивания. Быстрый пик в каталоге моего сайта-пакетов показывает, что имена многословных имен обычно просто запускаются вместе (например, setuptools, sqlalchemy)
Имена модулей (то есть имена файлов) могут быть разбиты символами подчеркивания (и я обычно делаю это, потому что я ненавижу namesthatruntogethersoywardlyreadthem).
Придерживайте только нижний регистр (на PEP-8). Это позволяет избежать проблем при переходе от чувствительных к регистру файлов, не учитывающих регистр, и наоборот.
Ответ 3
Помимо PEP-8, вы также можете узнать, как справиться с этой проблемой с помощью собственных модулей Python.
Если бы вы сравнили родные модули Python 2 с что Python 3, вы увидите, что новая тенденция с официальными разработчиками заключается в том, чтобы избежать прописных и подчеркивающих. Например, ConfigParser
в Python 2 становится ConfigParser
в Python 3.
Глядя на это, лучшим способом действий было бы избегать прописных и подчеркиваний и просто присоединяться к словам вместе, т.е. sconsconfig
.
Ответ 4
-
- это не гонка. Символ используется для оператора минус. То же самое можно сказать и на большинстве языков программирования. Используйте _
или иначе ничего.