Переменная - это имя
Переменная в Python - это имя, которое ты прикрепляешь к значению. Пишешь имя, знак равенства и значение:
Три переменные, три значения, три типа. Python спокойно держит их бок о бок, а тебе не пришлось ничего сообщать ему о том, какого типа эти значения. Значение идёт после =; имя - перед.
Как только переменная существует, её можно использовать везде, где ты использовал бы само значение:
Имена делают предпоследнюю строку самоописательной. В этом и главный выигрыш от хороших имён переменных - код, который читается как объяснение.
Присваивание - это не математика
Вот что ловит людей, пришедших из уроков математики: = в Python - это не «равно». Это «присвоить». Означает: «возьми значение после = и прикрепи его к имени слева». Python сначала вычисляет значение, потом делает присваивание.
Поэтому вот это совершенно законно:
Строка count = count + 1 не утверждает, что count равен count плюс один (математически невозможно). Она говорит: вычисли count + 1 и присвой результат обратно в count. Python сперва вычисляет выражение - 0 + 1 даёт 1 - и только потом обновляет переменную.
Писать count = count + 1 ты будешь достаточно часто, чтобы у Python был сокращённый вариант: count += 1 делает то же самое.
Переприсваивание меняет ярлык, а не значение
Переменная может начать указывать на другое значение в любой момент. Старое значение не модифицируется - переменная просто начинает ссылаться на что-то другое:
Обрати внимание на последнюю строку. mood две строки держит строку, а потом вдруг - целое число. Python не возразил. Это динамическая типизация - фиксированного типа у переменных нет, он есть только у значений. Эта гибкость помогает при прототипировании и кусается, когда переменная незаметно меняет смысл внутри функции. Безопасная привычка - подобрать имя, подходящее к тому, что представляет значение, и держать переменную в этой одной роли всю её жизнь.
Правила для имён переменных
Python принимает имена, которые:
- Начинаются с буквы или подчёркивания (
_). - Содержат буквы, цифры и подчёркивания.
- Не являются зарезервированным ключевым словом (
if,for,class,returnи ещё пара десятков).
Значит, вот эти валидны:
А эти - нет:
2nd_user- не может начинаться с цифры.user-name- дефисы запрещены (Python читает их как вычитание).class- зарезервированное ключевое слово.user name- пробелов в именах не бывает.
Имена чувствительны к регистру, как ты уже знаешь: total, Total и TOTAL - три разные переменные. Опечатку за тебя Python не заметит.
Соглашения об именовании
Помимо жёстких правил у сообщества Python есть соглашения - интерпретатором не навязанные, но принятые в экосистеме повсеместно:
lower_snake_caseдля обычных переменных и функций:retry_count,fetch_profile.UPPER_SNAKE_CASEдля констант:MAX_RETRIES = 5.PascalCaseдля имён классов (к ним ещё вернёмся).- Ведущее подчёркивание (
_something) - намёк, что имя задумывалось приватным. Не форсируется - только соглашение. - Замыкающее подчёркивание (
class_) позволяет использовать имя, которое иначе столкнулось бы с ключевым словом.
Придерживайся этого - и твой код будет выглядеть как тот Python, что писали другие.
Имена должны описывать смысл
Имя переменной печатать бесплатно, а читать - дорого. Потратить пару лишних символов на имя, которое реально описывает смысл значения, экономит будущим читателям (обычно тебе же) кучу прищуриваний.
Сравни:
Один и тот же код, один и тот же ответ - но только вторая версия сообщает, что происходит. Короткие имена (i, n, x) уместны в очень маленьких областях видимости вроде счётчиков цикла, но за их пределами - разворачивай слова.
Множественное присваивание (используй умеренно)
Python позволяет одной строкой присвоить одно значение нескольким переменным:
Или распаковать несколько значений разом:
Оба подходят, когда делают код яснее (например, распаковка возвращаемого значения функции). С первой формой - цепочкой = = = - стоит быть внимательным: все три переменные в итоге ссылаются на один и тот же объект, что важно для изменяемых типов вроде списков (к этому ещё вернёмся).
Что унести с собой
name = valueсоздаёт переменную.- У переменных типа нет; он есть у значений.
- Имена подчиняются нескольким жёстким правилам и множеству мягких соглашений - уважай и те, и другие.
- Описательное имя - самая дешёвая форма документации.
Дальше - какие именно типы значений Python поддерживает на самом деле: целые, дробные, строки, булевы, и почему полезно понимать, что есть что.
Часто задаваемые вопросы
Как создать переменную в Python?
Выбери имя, поставь после него = и положи значение справа. age = 30 создаёт переменную age со значением 30. Тип Python определяет автоматически - объявлять его не нужно.
Каковы правила имён переменных в Python?
Имя может содержать буквы, цифры и подчёркивания, но не может начинаться с цифры. Не может быть ключевым словом Python вроде if или class. Имена чувствительны к регистру: total, Total и TOTAL - три разные переменные. Соглашение сообщества - lower_snake_case.
Может ли переменная в Python менять тип?
Да. Python - язык с динамической типизацией, поэтому переменная, которая в один момент хранит число, в следующий может хранить строку. Эта гибкость удобна, но может удивить - если смысл переменной меняется посреди функции, это обычно сигнал подобрать новое имя.