Правила именования переменных в Python: как выбрать допустимое имя и нотацию

0
51

Памятка: как правильно называть переменные в Python

  1. Используйте только латинские буквы, цифры и подчеркивания.
  2. Начинайте имя с буквы или подчеркивания, но не с цифры.
  3. Применяйте стиль snake_case для обычных переменных.
  4. Избегайте зарезервированных слов Python.
  5. Давайте переменным осмысленные имена, отражающие их назначение.
  6. Для констант используйте ЗАГЛАВНЫЕ_БУКВЫ.
  7. Не используйте символы, отличные от ASCII (например, кириллицу).
  8. Избегайте слишком коротких имен (кроме i, j, k в циклах).
  9. Не начинайте имя с двух подчеркиваний (это для name mangling).
  10. Соблюдайте единый стиль во всем проекте.
  11. Для булевых переменных используйте префиксы is_, has_, can_.
  12. Не используйте символ ‘l’ (строчная L) и ‘O’ (заглавная O) отдельно.

Допустимые имена переменных в Python

Имена python - изображение номер один
Имена python — изображение номер один

Вы можете придумать любые названия для переменных в Python, но есть несколько правил, которые нужно соблюдать.

  • Имя переменной должно начинаться с буквы (test) или символа подчеркивания (_test);
  • Имя переменной не может начинаться с цифры;
  • Имя переменной может содержать только буквенно-цифровые символы и подчеркивание (Az, 0-9 и _);
  • Имена переменных чувствительны к регистру (test, Test и TEST — три разные переменные).
  • Имя переменной не должно совпадать с зарезервированным ключевым словом.

Знакомство с языком программирования - изображение номер два
Знакомство с языком программирования — изображение номер два

Имена переменных#

Урок 7 - изображение номер три
Урок 7 — изображение номер три

Имена переменных не должны пересекаться с названиями операторов и модулей или же других зарезервированных слов. В Python есть рекомендации по именованию функций, классов и переменных:

  • имена переменных обычно пишутся или полностью большими или полностью маленькими буквами (например DB_NAME, db_name);
  • имена функций задаются маленькими буквами, с подчёркиваниями между словами (например, get_names);
  • имена классов задаются словами с заглавными буквами без пробелов, это так называемый CamelCase (например, CiscoSwitch).

имена переменных обычно пишутся или полностью большими или полностью маленькими буквами (например DB_NAME, db_name);

имена функций задаются маленькими буквами, с подчёркиваниями между словами (например, get_names);

имена классов задаются словами с заглавными буквами без пробелов, это так называемый CamelCase (например, CiscoSwitch).

Нотация в Python: CamelCase или under_score?

How to accept and return snake case formatted - изображение номер четыре
How to accept and return snake case formatted — изображение номер четыре

Нотация
— это соглашение об именовании. Наиболее популярные нотации в программировании — camel case и underscore.

camelCase (еще называется «верблюжья нотация») — это стиль, в котором слова пишутся слитно, а каждое слово начинается с прописной (большой) буквы. Имеется два подвида этого стиля: lowerCamelCase (все слова кроме первого начинаются с прописной буквы) и UpperCamelCase (все слова, в том числе и первое пишутся с большой буквы).

under_score (snake_case) — при использовании этого стиля в качестве разделителя используется символ подчеркивания «_», а все слова начинаются со строчной (маленькой) буквы;

ЧИТАТЬ ТАКЖЕ:  Что такое конструктор __init__ в классе Python: метод, объекты и атрибуты

💭 Существует также стиль kebab-case, который похож на under_score, но вместо знака подчеркивания «_» в нем используется тире «-«.

()
Одно из правил Zen of PythonPEP20— «читаемость имеет значение». Нотация under_score отлично вписывается в это правило, т.к. она удобна для чтения. Это подтверждено исследованием, проведенным в департаменте компьютерных наук Кентского государственного университета в США. В нем, на основании количества фиксаций и продолжительности взгляда был произведен анализ влияния типа нотации на точность, время и усилия, необходимые для распознавания идентификатора. В ходе исследования было доказано, что новички распознают переменные, разделенные подчеркиванием в два раза быстрее и тратят на это меньше усилий. У опытных пользователей эта разница не так велика.

Однако under_score — не единственная нотация, рекомендуемая к использованию в Python. Вот гайдлайн по именованию, основанный на рекомендациях Гвидо ван Россума (автора языка Python):

Camel - изображение номер пять
Camel — изображение номер пять

Как выбирать имена для переменных в Python

Знакомство с языком программирования python - изображение номер шесть
Знакомство с языком программирования python — изображение номер шесть
  • Почему эта переменная (функция, класс и т.п.) существует?
  • Что она делает? (или какие данные в ней хранятся?)
  • Как используется?

В данном примере переменная d не обозначает ровным счётом ничего. По названию функции area не понятно, что она делает, какие параметры принимает и что возвращает.

⚡ Подбирайте имена на английском языке. Не нужно использовать русские имена переменных и писать их транслитом. Для программиста важно знать английский язык.

⚡ Для функций используйте глагол (например «купить», «получить», «распечатать»), для переменных, модулей и классов используйте существительное (например «список», «покупатели», «товары»).

⚡ Имена функций должны быть как можно короче. Функция выполняет всего одно действие и именно оно должно отображаться в её имени.

⚡ Перед именами булевских переменных (и методов, возвращающих тип bool), добавляйте префикс «is».

Там где не получается использовать «is», можно использовать «has» или «can». Пример: has_children().

⚡ Используйте удобопроизносимые имена. Людям удобно работать со словами. Часть мозга специализируется на обработке слов — нужно использовать эту часть мозга.

Имена будут использоваться в обсуждении с коллегами. Рассказывать про баг в методе get_any_mdhf класса GlobalFRTEV будет достаточно проблематично.

⚡ Использовать однобуквенные переменные не рекомендуется. Их можно использовать исключительно для локальных переменных в небольших методах.

⚡ Не нужно разрабатывать и использовать свою систему кодирования имен. Такие имена трудно произносить и в них можно сделать опечатку. К тому же, каждый новый сотрудник должен будет изучать вашу систему кодирования.

⚡ Также не следует использовать юмор при выборе имени файла. Ведь шутка может быть понятна не всем. Также не рекомендуется использовать каламбуры и сленг.

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

ЧИТАТЬ ТАКЖЕ:  Открытие XLS файлов в Python: чтение xlsx с помощью openpyxl, xlrd и pandas

💭 Больше полезных сведений о выборе имен идентификаторов и другие советы, которые пригодятся при написании кода, можно найти в книгах:

  • Роберт Мартин «Чистый код» («Содержательные имена», стр. 39);
  • Стив Макконнелл «Совершенный код» («Сила имен переменных», стр. 252).

Именование переменных в PEP8

  • b — идентификатор из одной маленькой буквы;
  • B — идентификатор из одной большой буквы;
  • lowercase — одно слово в нижнем регистре;
  • lower_case_with_underscores — нескольких слов из маленьких букв, между словами подчеркивания;
  • UPPERCASE — одно слово заглавными буквами;
  • UPPERCASE_WITH_UNDERSCORES — слова из заглавных букв, между словами подчеркивания;
  • CapitalizedWords — несколько слов без пробелов между ними, но каждое начинается с прописной буквы (CamelCase);
  • mixedCase — несколько слов без пробелов между ними, первое слово пишется с маленькой буквы, каждое последующее — с большой;
  • Capitalized_Words_With_Underscores — имена переменных состоят из нескольких слов, которые начинаются с большой буквы, разделенных между собой знаком подчеркивания «_».

💁‍♂️ Для удобства, среды разработки (например PyCharm) автоматически проверяют, насколько код соответствует рекомендациям стандарта РЕР8. Если имя идентификатора не будет соответствовать соглашениям, то IDE подчеркнет переменную, а если навести на нее мышку, появится сообщение с подсказкой.

What is the naming convention in - изображение номер семь
What is the naming convention in — изображение номер семь

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

Чтобы прокачать навык именования переменных, читайте чужой код крупных проектов (например на github). Смотрите, какие имена используют опытные разработчики, анализируйте и применяйте в своих проектах.

Часто задаваемые вопросы о нейминге переменных в Python

Вопрос: Можно ли использовать русские буквы в именах переменных?
Ответ: Технически да, начиная с Python 3, но это строго не рекомендуется по PEP8 и может вызвать проблемы с кодировкой.

Вопрос: Что делать, если имя переменной совпадает с ключевым словом?
Ответ: Использовать такое имя нельзя, нужно выбрать синоним или добавить подчеркивание в конец (например, class_).

Вопрос: Как назвать переменную, если она хранит количество элементов?
Ответ: Используйте множественное число, например, users_count или number_of_items.

Вопрос: Допустимы ли пробелы в именах переменных?
Ответ: Нет, пробелы запрещены. Используйте подчеркивание для разделения слов.

Вопрос: Какой стиль написания предпочтительнее: snake_case или camelCase?
Ответ: Для переменных в Python по PEP8 рекомендуется snake_case (например, my_variable).

Вопрос: Можно ли начинать имя переменной с цифры?
Ответ: Нет, имя переменной должно начинаться с буквы или символа подчеркивания.

Вопрос: Что означает одинарное подчеркивание в начале имени (_var)?
Ответ: Это соглашение, указывающее, что переменная считается внутренней или приватной.

Вопрос: Как назвать константу в Python?
Ответ: Используйте заглавные буквы с подчеркиваниями, например, MAX_VALUE.

Вопрос: Влияет ли длина имени переменной на производительность?
Ответ: Нет, длина имени не влияет на скорость выполнения кода, но влияет на читаемость.

Вопрос: Можно ли использовать зарезервированные слова как имена переменных?
Ответ: Нет, это вызовет синтаксическую ошибку. Используйте альтернативные названия.