Понятные названия
Названия должны однозначно говорить о том, зачем нужна сущность: переменная, функция или что-то ещё.
Переменные – это сущности, а их названия – это существительные ( user.level ) или их свойства ( user.is_admin ). Название должно ясно ответить на вопрос «Что хранит переменная?».
Функции что-то делают с переменными, значит их названия – глаголы ( download_report , levelup_user ), и они отвечают на вопрос «Что делает функция?». Ответ должен быть полным, исчерпывающим. Например, недопустима ситуация когда def fetch_page(url) делает что-то неожиданное, не предусмотренное названием: выводит в консоль, вызывает exit(‘Случилась ошибка. Все сломалось’) и прочее.
Названия должны быть:
- понятными: понятно говорить о смысле. Не result , а users_online или json_content .
- точными: переменная user_online не подходит для хранения списка пользователей. Такое название вводит в заблуждение и провоцирует на ошибки в коде. Корректный вариант — users_online .
- полными: никаких r для радиуса Земли или i для элемента списка. В первом случае подойдёт earth_radius , а во втором какой-нибудь user или book , в зависимости от того, что в списке. Длинные названия – не проблема, у всех давно есть автокомплит.
- на английском: никаких kniga или polsovatel . Брр.
- грамотными: не поленись открыть переводчик и гугл, чтобы подобрать правильный перевод. Неправильный перевод создаёт ощущение неряшливости, а может и смыслу навредить – тогда о читаемости не может быть и речи.
- уникальными: в Питоне есть встроенные функции, называть переменные их именами нельзя: тогда функция станет недоступна. Среди них есть file, dict, all, str.
Читайте дальше
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
2. Переменные в Python
Для простых вычислений, таких как \(5+9*7\) или \(6**~9\), можно использовать командный режим Python, но для написания программ необходим ещё один важный компонент программы — переменная. Что такое переменная?
Переменная — это величина, которая имеет имя, тип и значение.
К переменной обращаются по её имени, как и к любому объекту. Имя переменной в Python имеет ограничения: начинаться имя должно только с латинской буквы или с нижнего подчёркивания «_», служебные слова языка программирования не могут быть именами.
- хорошие имена: \(a\), \(B\), \(K3\), _ \(LETO\) .
- плохие имена: \(and\) (знак логической операции), \(1TTT\) (начинается с цифры), \(print\) (служебное слово).
Переменная — это контейнер для хранения различных значений (данных).
Чтобы переменная получила какое-то значение, его нужно присвоить.
В Python команда «присвоить» — это знак «\(=\)».
Правильный выбор имен переменных в Python
Будучи единоличным хозяином своей программы, вы вправе выбирать имена переменным. В прошлой статье я решил назвать переменную name, но с тем же успехом можно было бы ее именовать human, nickname или даже omega12345666: работа программы нисколько не изменилась бы.
Для создания корректных имен переменных надо следовать всего нескольким правилам; о некорректном имени Python вам сообщит, выведя ошибку.
Итак, важнейших правил два:
- имя переменной может состоять только из цифр, букв и знаков подчеркивания;
- имя переменной не может начинаться с цифры.
Вдобавок к этим двум абсолютным законам есть несколько негласных правил, которым следуют все опытные программисты.
Вы тоже, приобретя некоторый опыт, почувствуете разницу между “просто корректными” и “хорошими” именами переменным(приведу пример прямо сейчас: имя omega12345666 – корректное, но очень, очень плохое). Перечислю основное, что надо и нужно запомнить.
Имя должно описывать суть. Следует называть переменные так, чтобы другой программист, взглянув на ваш код, смог толком разобраться, что есть что. Поnэтому, например, score лучше, чем s.
Исключение – кратковременно действующие переменные, которым программисты склонны присваивать короткие имена, например х. Но даже этот случай нельзя считать подлинным исключением, ведь, называя переменную х, программист дает понять, что она временная.
Будьте последовательны. Есть много разных позиций по вопросу о том, как лучше оформлять имена переменных, составленные из нескольких слов. Будет ли лучше, например, написать high_score или highScore?
Я привык пользоваться подчеркиванием.Отнюдь не важно, какой системы вы придерживаетесь, лишь бы вы следовали все время только ей, хотя по стандарту оформления программ правильно использовать для переменных и функций именно подчеркивания.
Уважайте обычай языка. Некоторые правила именования переменных – всего лишь дань традиции. Так, в большинстве языков программирования, в том числе и в Python, имя переменной принято начинать со строчной буквы.
Другая традиция состоит в том, чтобы избегать подчеркиваний в качестве начальных символов в именах переменных (у имен с начальным подчеркиванием в Python особый смысл).
Следите за длиной. Иногда эта рекомендация может вступать в противоречие с первой, требующей от имен переменных описательной силы. В самом деле, разве удобно пользоваться таким, например, именем: persona1_checking_account_bаlance’? Видимо, нет.Чересчур длинные имена переменных проблематичны, в частности, тем, что загромождают код.
А кроме того, чем длиннее имя, тем выше риск сделать в нем опечатку. Советую вам не создавать имена длиннее 15 символов.
Кстати, самодокументирующим называется код, из которого даже без комментариев легко понять, что происходит в программе. «Говорящие» имена переменных – немаловажный шаг на пути к созданию такого кода.
Вот что случится если объявить переменную ошибочно, то есть начать переменную с цифрами:
Python: Именование переменных
greeting — пример простого имени, но не все имена так просты. Часто они включают в себя несколько слов: например, «имя пользователя». В разных языках применяются разные стили кодирования, и имя переменной будет отличаться.
В именовании переменных можно выделить три основных подхода, которые иногда комбинируют друг с другом. Все эти подходы проявляют себя, когда имя переменной состоит из нескольких слов:
- kebab-case — составные части переменной разделяются дефисом ( my-super-var )
- snake_case — для разделения используется подчеркивание ( my_super_var )
- CamelCase — каждое слово в переменной пишется с заглавной буквы ( MySuperVar )
Переменные в Python именуются в стиле snake_case : слова записываются строчными буквами и разделяются символом подчеркивания _ . Чтобы разобраться подробнее, можете изучить раздел «Как называть переменные» в стандарте PEP8.
На Хекслете мы начинаем работать с линтерами почти с самого начала.
Далее посмотрим пример плохих практик и разберем, почему их стоит избегать.
Задание
Создайте две переменные с именами «первое число» и «второе число» на английском языке используя snake_case. Запишите в первую переменную число 20 , во вторую — -100 . Выведите на экран произведение чисел, записанных в получившиеся переменные.
Код будет работать с любыми названиями, а наша система всегда проверяет только результат на экране, поэтому выполнение этого задания — под вашу ответственность.
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Полезное
Определения
- Стандарт кодирования — набор синтаксических и стилистических правил написания кода.
