Соглашение об именах файлов Python?

139

Я видел эту часть PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-names

Мне не ясно, относится ли это к имени файла модуля / класса / пакета.

Если бы у меня был один пример каждого, должны ли имена файлов быть строчными и подчеркивания, если это уместно? Или что-то другое?

darkace
источник
4
tl; dr: два класса FooBarи FooBizмогут оба помещаться в файл somepkg/foobar.py(таким образом:), from somepkg.foobar import FooBarно класс TimerErrorможет входить except/timer_error.py(таким образом from except.timer_error import TimerError), так как удаление CamelCaseиногда затрудняет чтение слова, поэтому snake_caseможет использоваться для имени файла.
Майкл

Ответы:

156

Цитирование https://www.python.org/dev/peps/pep-0008/#package-and-module-names :

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

Для занятий :

Имена классов должны обычно использовать соглашение CapWords.

И имена функций и (локальных) переменных должны быть:

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

Посмотрите этот ответ для разницы между модулем, классом и пакетом:

  • Модуль Python - это просто исходный файл Python, который может предоставлять классы, функции и глобальные переменные.
  • Пакет Python - это просто каталог модулей (модулей) Python.

Итак, PEP 8 говорит вам, что :

  • модули (имена файлов) должны иметь короткие, строчные имена , и они могут содержать подчеркивания;
  • пакеты (каталоги) должны иметь короткие, строчные имена , желательно без подчеркивания;
  • классы должны использовать соглашение CapWords.

PEP 8 говорит, что имена должны быть короткими ; Этот ответ дает хороший обзор того, что следует учитывать при создании имен переменных, которые также применяются к другим именам (для классов, пакетов и т. д.):

  • имена переменных не являются полными дескрипторами;
  • поместить детали в комментарии;
  • слишком конкретное имя может означать слишком конкретный код;
  • держите короткие прицелы для быстрого поиска;
  • тратить время на размышления о читабельности.

В заключение, хороший обзор соглашений об именах приведен в Руководстве по стилю Google Python .

Agold
источник
5
И я смущенно прошу подтвердить мое понимание, модули содержат классы - так вы бы использовали классы внутри модулей и могли иметь несколько классов в одном модуле?
darkace
6
Да, вы можете иметь 0, 1 или более классов в модуле.
agold
1
Я рад, что нашел это вовремя, прежде чем мой проект вышел из-под контроля, так как все мои пакеты следовали соглашению CapsWords, как и мои классы.
Бас Янсен
1
@pypmannetjies это на самом деле другой вопрос, но я бы сказал, что вы должны предпочитать длинные понятные имена коротким непонятным.
agold
1
Для названия пакета написано «использование символов подчеркивания не рекомендуется», а не запрещено. В философии питона вы должны следовать правилу «хотя практичность побеждает чистоту». Конечно, лучше всего , чтобы найти способ , чтобы следовать правилу и быть практичным (возможно , сделать несколько пакетов , чтобы разделить имя, some> long> nameа somelongname?)
Juh_
0

Вот ссылка для различных типов соглашений имен Python.

Руководство по стилю для Python основано на рекомендациях Guido по соглашениям об именах.

введите описание изображения здесь

Влад Безден
источник