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


139

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

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

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


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 .


5
И я смущенно прошу подтвердить мое понимание, модули содержат классы - так вы бы использовали классы внутри модулей и могли иметь несколько классов в одном модуле?
darkace

6
Да, вы можете иметь 0, 1 или более классов в модуле.
agold

1
Я рад, что нашел это вовремя, прежде чем мой проект вышел из-под контроля, так как все мои пакеты следовали соглашению CapsWords, как и мои классы.
Бас Янсен

1
@pypmannetjies это на самом деле другой вопрос, но я бы сказал, что вы должны предпочитать длинные понятные имена коротким непонятным.
agold

1
Для названия пакета написано «использование символов подчеркивания не рекомендуется», а не запрещено. В философии питона вы должны следовать правилу «хотя практичность побеждает чистоту». Конечно, лучше всего , чтобы найти способ , чтобы следовать правилу и быть практичным (возможно , сделать несколько пакетов , чтобы разделить имя, some> long> nameа somelongname?)
Juh_

0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.