Что такое переменная?
В программировании переменная представляет собой именованное место в памяти, где хранится значение, которое программа может читать и менять во время работы. Имя, например score или user_name, позволяет коду обращаться к значению, не зная, где именно оно хранится.
Обновлено 24 сентября 2026 г.
Игра, которая ведёт счёт, должна запомнить число, прибавлять к нему и показать его в конце. Записать это число прямо в код нельзя, потому что при каждой игре оно разное. Поэтому программа выделяет место в памяти, даёт ему имя вроде score и использует это имя всякий раз, когда ей нужно текущее значение.
Как работает переменная
За время работы программы с переменной происходят три вещи:
- Создание. Программа резервирует память для значения и привязывает к ней имя. В Python это происходит при первом присваивании имени. В Java и C переменную сначала объявляют с типом, например
int score;. - Присваивание. Значение сохраняется под именем с помощью
=. Новое присваивание заменяет старое значение. - Использование. Везде, где имя встречается в выражении, программа читает значение, которое оно хранит в этот момент.
Start: 0
After one point: 10
Doubled: 20
В каждой строке с присваиванием сначала вычисляется правая часть, с тем значением score, которое есть в этот момент. Затем результат сохраняется обратно под тем же именем. Имя остаётся прежним, а значение, которое оно хранит, меняется.
Знак равенства означает «сохранить»
В математике у x = x + 1 нет решения. В программе это обычная инструкция: взять текущее значение x, прибавить 1 и сохранить результат в x. Знак = является оператором присваивания, и он всегда переносит значение из правой части в имя слева.
Чтобы спросить, равны ли два значения, языки программирования используют другой оператор, ==. Выражение x == 5 ничего не меняет; оно даёт True или False, то есть boolean.
Математический смысл похож, но не совпадает. В алгебре x в уравнении 2x + 3 = 7 обозначает одно неизвестное число, которое нужно найти. В программе переменная хранит известное значение, которое может меняться по ходу работы.
Переменные и типы данных
У каждого значения есть тип: целое число, дробное число, текст, boolean, список. Языки различаются тем, есть ли тип у самой переменной.
В Python и JavaScript тип несёт значение, и одна переменная со временем может хранить значения разных типов. Это называется динамической типизацией:
42 <class 'int'>
forty-two <class 'str'>
В Java, C и C++ у переменной фиксированный тип, который выбирается при объявлении. Это статическая типизация: компилятор отвергает код, который пытается записать текст в переменную типа int, ещё до запуска программы.
int age = 30; // Java: type, name, value
String name = "Rosa";
let age = 30; // JavaScript: can be reassigned
const PI = 3.14159; // cannot be reassigned
В C тип определяет ещё и то, сколько памяти занимает переменная. int занимает 4 байта почти во всех современных системах, double занимает 8, а char ровно 1. Чтобы хранить много значений под одним именем, например все очки в игре, используют массив или список и обращаются к каждому значению по его позиции, как в scores[0].
Коробки и этикетки
Переменную часто представляют как коробку, в которой лежит значение. Для C эта картинка подходит хорошо: int x; действительно является фиксированным участком памяти, а y = x; копирует значение во второй участок.
Python работает скорее как этикетки. Каждое значение является объектом, а переменная представляет собой имя, прикреплённое к нему. Разница видна, когда два имени ссылаются на один и тот же список:
5 6
[1, 2, 3, 4]
С числами y = y + 1 создаёт новое число и переносит на него этикетку y, поэтому x по-прежнему ссылается на 5. Со списком b = a ничего не копирует: оба имени ссылаются на один список, поэтому изменение через b видно и через a. Пиши b = a.copy(), когда нужен отдельный список. Объекты и массивы в Java и JavaScript ведут себя так же.
Область видимости: где существует переменная
Переменная видна только в части программы, которая называется её областью видимости. Переменная, созданная внутри функции, является локальной: она существует, пока функция работает, и исчезает, когда функция возвращает результат. Переменная, созданная на верхнем уровне файла, является глобальной, и её можно читать в любом месте этого файла.
С локальными переменными проще разобраться, потому что все строки, которые могут их изменить, находятся внутри одной функции. Программы, которые опираются на множество глобальных переменных, по той же причине отлаживать труднее.
Как называть переменные
Хорошее имя говорит, что означает значение: total_price, is_logged_in, retries_left. В большинстве языков правила одинаковы:
- имя состоит из букв, цифр и подчёркиваний и не может начинаться с цифры;
- имя не может быть ключевым словом языка, например
if,forилиclass; - имена чувствительны к регистру, поэтому
totalиTotalявляются двумя разными переменными.
Стиль зависит от языка. В Python используют snake_case (user_name), а в Java и JavaScript camelCase (userName). Значения, которые никогда не должны меняться, часто называют заглавными буквами, как MAX_SIZE.
Частые ошибки
Использование переменной до того, как у неё появилось значение. Python останавливается с NameError:
NameError: name 'total' is not defined
Та же ошибка появляется, когда имя написано с опечаткой, потому что для компьютера totla и total являются разными именами.
= вместо ==. В Python if x = 5: является синтаксической ошибкой, так что ты сразу это заметишь. В C и JavaScript if (x = 5) является допустимым кодом: он сохраняет 5 в x, и условие всегда истинно. Программа работает и выдаёт неверные результаты: это логическая ошибка, на поиск которой может уйти много времени.
Одна переменная для двух задач. Переменная, которая в начале функции хранит цену, а в конце количество, всё равно работает, но каждому читателю приходится следить, какой смысл у неё сейчас. Дай каждому смыслу своё имя.
Что изучить дальше
Переменные хранят значения, и следующий шаг состоит в том, чтобы узнать, какие бывают значения: прочитай, что такое boolean, про истину и ложь, и что такое массив, про много значений под одним именем. Руководство по переменным в Python подробнее рассказывает о присваивании, правилах именования и множественном присваивании, а в курсе Python ты пишешь и меняешь переменные с первого урока.
Часто задаваемые вопросы
Что такое переменная в Python?
age = 30, без объявления типа, и позже то же имя может ссылаться на значение другого типа. По соглашению имена переменных в Python пишут в стиле snake_case.Какое простое определение у переменной?
Как объяснить переменную ребёнку?
score, а в коробке лежит одна вещь за раз. Можно заглянуть внутрь и посмотреть, что там, или вынуть вещь и положить новую, а этикетка останется прежней.Чем переменная отличается от константы?
final, в JavaScript и C используют const. В Python нет принудительных констант, поэтому программисты пишут имя заглавными буквами, например MAX_USERS, чтобы показать, что его не следует менять.