Конвенція про іменування файлів Python?


137

Я бачив цю частину 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-name :

Модулі повинні мати короткі, малі імена. Підкреслення можна використовувати у назві модуля, якщо це покращує читабельність. Пакети Python також повинні мати короткі, малі імена, хоча використання підкреслення не рекомендується.

Для занять :

Імена класів зазвичай повинні використовувати конвенцію CapWords.

І назви функцій та (локальних) змінних повинні бути:

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

Дивіться цю відповідь про різницю між модулем, класом та пакетом:

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

Отже, PEP 8 повідомляє вам, що :

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

PEP 8 повідомляє, що імена повинні бути короткими ; ця відповідь дає хороший огляд того, що слід враховувати при створенні змінних імен, що також стосується інших імен (для класів, пакетів тощо):

  • імена змінних не є повними дескрипторами;
  • розмістити деталі в коментарях
  • занадто конкретне ім’я може означати занадто конкретний код;
  • зберігати короткі рамки для швидкого пошуку;
  • витрачати час на роздуми про читабельність.

На завершення в Посібнику зі стилів Google Python наведено хороший огляд умов іменування .


5
І я збентежено попрошу підтвердити своє розуміння, модулі містять класи - тож ви б використовували класи в модулях і могли б мати кілька класів в одному модулі?
темрява

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

1
Я радий, що виявив це в часі, перш ніж мій проект вийшов з рук, оскільки всі мої пакети дотримувалися конвенції CapsWords так само, як і мої заняття.
Бас Янсен

1
@pypmannetjies - це насправді інше питання, але я б сказав, що вам слід віддавати перевагу довгим зрозумілим іменам над короткими, не зрозумілими.
agold

1
У назві упаковки написано, що "використання підкреслювань не рекомендується", не заборонено. У філософії пітона слід дотримуватися правила, "хоча практичність перемагає чистоту". Звичайно, найкраще , щоб знайти спосіб , щоб слідувати правилу і бути практичним (можливо , зробити кілька пакетів , щоб розділити ім'я, some> long> nameа somelongname?)
Juh_

0

Ось посилання на різні типи конвенцій назв Python.

Посібник зі стилів для Python заснований на рекомендаціях Конвенції про іменування Гуйдо.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.