Правильный регистр и формат переменной и методы и для Python - PullRequest
3 голосов
/ 14 ноября 2009

Итак, я знаю, что в некоторых языках есть соглашения.

PHP - underscore_case() [по большей части, lolo]

Java - camelCase()

C # - PascalCase()

и т.д.

Что такое "Pythonic" соглашение об именах? Я знаю, что в конце концов это не имеет значения, но мне просто интересно, есть ли «наилучшая практика», с которой большинство модулей работают.

Ответы [ 3 ]

7 голосов
/ 14 ноября 2009

Два слова: PEP 8 .

PEP 8 - это (де-факто) руководство по стилю Python. Некоторые основные моменты из этого документа (я специально упустил некоторые вещи; прочитайте исходный документ для подробностей):

  • Имена пакетов и модулей : Все строчные имена. Подчеркивания могут использоваться в имени модуля, если это улучшает читаемость.

  • Имена классов : Практически без исключения в именах классов используется соглашение CapWords. *

  • Имена глобальных переменных : Соглашения примерно такие же, как и для функций.

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

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

  • Константы : написаны заглавными буквами с подчеркиванием, разделяющим слова. Примеры включают в себя.

5 голосов
/ 14 ноября 2009

Чтение PEP 8 .

Это руководство по стилю для кода Python, написанное его создателем Гвидо ван Россумом.

Кстати, ответом на ваш вопрос является использование underscore_case для переменных и имен функций и PascalCase для классов.

1 голос
/ 14 ноября 2009

Семь слов: Руководство по стилю Google Summer of Code Python

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

  • «Внутренний» означает внутренний для модуля или защищенный или частный в классе. Добавление одного подчеркивания (_) имеет некоторую поддержку для защиты переменных и функций модуля (не входит в import * from).
  • Добавление двойного подчеркивания (__) к переменной или методу экземпляра эффективно делает переменную или метод приватными для своего класса (используя искажение имени).
  • Поместите связанные классы и функции верхнего уровня вместе в модуле. В отличие от Java, нет необходимости ограничивать себя одним классом на модуль. Однако убедитесь, что классы и функции верхнего уровня в одном и том же модуле имеют высокую степень сцепления.
  • Используйте CapWords для имен классов, но lower_with_under.py для имен модулей.

Примеры именования

  • Пакеты: lower_with_under
  • Модули: lower_with_under, _lower_with_under
  • Классы: CapWords, _CapWords
  • Исключения: CapWords
  • Функции: firstLowerCapWords(), _firstLowerCapWords()
  • Глобальные / классовые константы: CAPS_WITH_UNDER, _CAPS_WITH_UNDER
  • Глобальные / классовые переменные: lower_with_under, _lower_with_under
  • Переменные экземпляра: lower_with_under, _lower_with_under (защищенный) или __lower_with_under (частный)
  • Имена методов: firstLowerCapWords(), _firstLowerCapWords() (защищенный) или __firstLowerCapWords() (частный)
  • Функция / Метод Параметры: lower_with_under
  • Локальные переменные: lower_with_under
...