Что такое переменная в программировании: имя, тип и значение на примерах

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

Разбираем, как её создают в Python, JavaScript и C, чем объявление отличается от присваивания, какие бывают типы и откуда берутся NameError и UnboundLocalError.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3090 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3744 экспертных мнения Подписаться на Телеграм-канал
Обложка: Что такое переменная в программировании: имя, тип и значение на примерах

Переменной в программировании называют именованное место, где программа хранит значение: число, строку, список. Вы пишете age = 25, и дальше в коде вместо числа можно писать age, менять его и подставлять в расчёты.

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

Ниже разберём, как переменную создают в Python, JavaScript и C, какие бывают типы, как выбирать имена и какие ошибки чаще всего делают новички. Если вы только начинаете, откройте рядом план, как учиться программированию с нуля: переменные там идут первой темой.

CheckroiCheckroiПодборка курсов по Python568 курсов • 51 школаСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Переменная простыми словами

Рой подписывает коробку с числом 25 ярлыком age

Самая частая аналогия: коробка с наклейкой. На наклейке написано имя, внутри лежит значение. Положили в коробку число 25, подписали её «age», и программа в любой момент достаёт число по имени.

Для Python точнее другая картинка: имя похоже на ярлык, привязанный к объекту. В описании модели выполнения Python сказано, что имена ссылаются на объекты и появляются при операциях связывания имени. Разница становится заметной, когда два имени смотрят на один и тот же список. Этот случай разобран в разделе об ошибках.

Что есть у переменной Пример для age = 25
Имя age
Значение 25
Тип целое число, в Python это int
Место в памяти участок, где лежит значение; в Python и JavaScript памятью управляет сам язык, в C до адреса можно добраться через указатель

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

Как создать переменную: объявление, инициализация и присваивание

Эти три слова путают чаще всего, хотя за каждым стоит своё действие:

  • Объявление: программа узнаёт, что такое имя существует. В C это int age;, в JavaScript let age;.
  • Инициализация: первое значение, которое переменная получает при создании, например int age = 25;.
  • Присваивание: запись нового значения в уже существующую переменную, например age = 26.

В Python отдельного объявления нет, переменная появляется в момент первого присваивания. В справочнике языка об этом сказано прямо: в Python нет объявлений, а связывание имени может стоять в любом месте блока кода.

Python

age = 25
name = "Анна"
price = 199.9
is_student = True

print(name, age)
age = age + 1
print(age)

Вывод:

Анна 25
26

Знак = здесь означает присваивание: значение справа записывается в имя слева. Строка age = age + 1 берёт старое значение, прибавляет единицу и кладёт результат обратно. Другие знаки, например += и //, разобраны в статье про операторы Python, а самые первые строки кода есть в подборке простых примеров с Hello World.

JavaScript

let count = 1;
count = 2;
console.log(count); // 2

let создаёт переменную, которую можно менять, const создаёт константу. Старое слово var до сих пор работает, но ведёт себя иначе. Разница описана в разделе про область видимости.

C

#include <stdio.h>

int main(void) {
    int age = 25;
    double price = 199.9;
    age = age + 1;
    printf("%d %.1f\n", age, price);
    return 0;
}

Программа печатает 26 199.9. В C тип пишут перед именем, и поменять его потом нельзя: age останется целым числом до конца программы.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Типы переменных

Коробки разной формы для чисел, текста и логических значений

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

Тип Что хранит Python JavaScript C
Целое число 25, −3 int number int
Дробное число 199.9 float number double
Строка "Анна" str string массив char
Логическое значение истина или ложь bool boolean bool из stdbool.h
Набор значений несколько элементов подряд list Array массив

Узнать тип в Python помогает функция type(). Для переменных из примера выше она выдаёт:

print(type(age), type(name), type(price), type(is_student))
# <class 'int'> <class 'str'> <class 'float'> <class 'bool'>

Про целые числа есть отдельный разбор типа int и функции int(), про логический тип написана статья о Boolean и значениях true и false.

Статическая и динамическая типизация

В Python тип хранится у значения. Поэтому одно и то же имя можно сначала привязать к числу, а потом к строке:

x = 10
print(type(x))   # <class 'int'>
x = "десять"
print(type(x))   # <class 'str'>

В C так не выйдет. Если положить строку в переменную типа int, компилятор clang 17 откажется собирать программу:

error: incompatible pointer to integer conversion assigning to 'int' from 'char[28]' [-Wint-conversion]
    age = "двадцать шесть";

Динамическая типизация удобна в коротких скриптах. Статическая ловит часть ошибок ещё до запуска, и в большом проекте это экономит часы отладки.

Для первого знакомства я бы взял Python: переменная там создаётся одной строкой, без слова-объявления и без типа. К строгим типам C и Java проще прийти потом, когда понятно, что вообще хранится в переменной. Курсы, где с Python начинают с нуля, собраны в разделе Python.

Как называть переменные

Правила имён в разных языках похожи. Для Python они записаны в разделе справочника о лексике языка:

  • имя состоит из букв, цифр и подчёркивания, но цифра не может стоять первой: user2 можно, 2user нельзя;
  • регистр важен: Age и age будут двумя разными переменными;
  • ключевые слова вроде if, for и class под имя переменной занять нельзя;
  • верхнего предела длины у имени нет.

Кириллица в именах Python тоже работает:

цена = 100
print(цена * 2)   # 200

В учебной задаче так можно. В рабочем коде имена пишут латиницей, иначе коллега с другой раскладкой не сможет даже набрать название переменной.

Как записывать имена из нескольких слов, решает соглашение языка. Руководство по стилю PEP 8 рекомендует для функций и переменных строчные буквы с подчёркиваниями: total_price. В JavaScript обычно пишут слитно с заглавной буквой в середине: totalPrice.

Неудачное имя Лучше Почему
x user_age по имени понятно, что лежит внутри
data2 orders_today цифра в конце ничего не объясняет
l items PEP 8 велит никогда не брать l, O и I в однобуквенные имена: в некоторых шрифтах их не отличить от единицы и нуля

Область видимости: где переменная доступна

Переменная доступна только в своей области видимости. Если создать её внутри функции, снаружи этого имени не будет:

def count_total():
    result = 42

count_total()
print(result)
NameError: name 'result' is not defined

Такая переменная называется локальной. Переменная, созданная вне функций, глобальная: её видно во всём файле. Как устроены сами функции, разобрано в статье про def и return в Python.

С глобальной переменной есть ловушка. Прочитать её из функции можно, а изменить через += без слова global не получится:

counter = 0

def add():
    counter += 1

add()
UnboundLocalError: cannot access local variable 'counter' where it is not associated with a value

Python видит присваивание внутри функции и считает counter локальной переменной, у которой ещё нет значения.

let и var в JavaScript

По справке MDN, переменная из let видна только в блоке, где её объявили, а var объявляет переменную во всей функции. Есть и второе отличие. К let нельзя обратиться до объявления, будет ReferenceError, а var в этот момент просто содержит undefined:

console.log(score);
let score = 10;
// ReferenceError: Cannot access 'score' before initialization

console.log(level);   // undefined
var level = 1;

Поэтому в новом коде берут let и const, а var встречается в основном в старых скриптах. Если JavaScript у вас первый язык, программы для начинающих собраны в каталоге курсов JavaScript.

Константы: значения, которые не переписывают

Константа хранит значение, которое после создания не меняют. В JavaScript её объявляют через const, и повторное присваивание падает с ошибкой:

const PI = 3.14;
PI = 3;
// TypeError: Assignment to constant variable.

Тонкость из справки MDN по const: запрещено переназначать сам идентификатор, а объект, на который он указывает, менять можно. Так же работает и массив в const: в него можно добавлять объекты через push.

const user = { name: "Анна" };
user.name = "Олег";
console.log(user.name);   // Олег

В Python отдельного слова для констант нет. Есть договорённость из PEP 8: константы обычно объявляют на уровне модуля и пишут заглавными буквами с подчёркиваниями, например MAX_OVERFLOW. Технически такое имя можно переписать, но заглавные буквы как раз предупреждают коллег, что трогать его не нужно.

Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Частые ошибки новичков

Рой радуется, что нашёл и исправил опечатку в имени переменной

NameError: переменной нет

Симптом: NameError: name 'total' is not defined. В учебнике Python про это сказано так: если переменной не присвоили значение, попытка её использовать даёт ошибку.

Решение: проверьте, что присваивание стоит выше по коду, и сверьте регистр. Total и total для Python разные имена.

Строку склеили с числом

Python на print("Возраст: " + 25) отвечает TypeError: can only concatenate str (not "int") to str. JavaScript молча склеит и выведет Возраст: 25, поэтому такая ошибка в JS всплывает позже и в неожиданном месте.

Та же история с вводом: input() возвращает строку, даже если человек набрал цифры.

Решение: переводить типы явно, через str(25) или f-строку, а ввод числа оборачивать в int(input()).

Одиночное = в условии

Сравнение пишут двумя знаками: ==. Python на if age = 25: выдаёт SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?. В JavaScript if (age = 25) сработает без ошибки: условие запишет 25 в переменную и выполнится, даже если там было 30.

Два имени на один список

a = [1, 2]
b = a
b.append(3)
print(a)   # [1, 2, 3]

Строка b = a привязывает второй ярлык к тому же объекту, копии списка при этом не появляется. Поэтому добавление в b видно и через a.

Решение: b = a.copy(), тогда a останется [1, 2]. Как ещё добавлять элементы, показано в инструкции про append(), insert() и extend().

Переменная без значения в C

Если написать int total; и сразу вывести total, программа соберётся, а что окажется в переменной, заранее не известно. С флагом -Wall clang предупреждает: variable 'total' is uninitialized when used here.

Решение: задавать значение сразу при создании, int total = 0;.

Где освоить программирование системно

С переменных начинается любой курс программирования, дальше идут условия, циклы и функции. Закрепить первые темы можно на 30 задачах по Python для начинающих.

Если нужен план с наставником и проверкой домашних заданий, ниже курсы по Python из нашего каталога. Программы по другим языкам собраны в разделе «Программирование и IT».

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
Профессия «Python-разработчик»
Перейти на сайт курса
SkillboxSkillbox157 335 ₽5987 ₽/мес.10 месяцевОбзор курса
Fullstack-разработчик на Python
Перейти на сайт курса
НетологияНетология137 000 ₽7125 ₽/мес.21 месяцОбзор курса
ДО Профессия Python-разработчик
Перейти на сайт курса
GeekBrainsGeekBrains149 001 ₽3167 ₽/мес.10 месяцевОбзор курса
Автоматизированное тестирование на Python
Перейти на сайт курса
SkillboxSkillbox122 226 ₽4108 ₽/мес.9 месяцевОбзор курса
Профессия Python-разработчик
Перейти на сайт курса
SkillFactorySkillFactory140 040 ₽4279 ₽/мес.10 месяцевОбзор курса

Больше программ — в полном каталоге курсов по Python

Часто задаваемые вопросы

Что такое переменная в программировании простыми словами?

Это имя, под которым программа хранит значение: число, строку или список. Написали age = 25, и дальше в коде можно обращаться к числу по имени age и менять его.

Чем объявление переменной отличается от инициализации?

Объявление сообщает программе, что такое имя есть (int age; в C). Инициализация даёт переменной первое значение при создании (int age = 25;). В Python отдельного объявления нет, переменная появляется при первом присваивании.

Какие типы переменных бывают?

Базовый набор почти везде одинаковый: целые и дробные числа, строки, логические значения и наборы значений вроде списков и массивов. В Python тип покажет функция type(), подробнее про логический тип в статье о Boolean.

Можно ли называть переменные русскими буквами?

В Python можно: цена = 100 работает. В рабочем коде имена всё равно пишут латиницей, чтобы их мог набрать и прочитать любой разработчик в команде.

Чем переменная отличается от константы?

Значение переменной можно переписать, константу после создания не меняют. В JavaScript константу объявляют через const, в Python отдельного слова нет, и константы по договорённости пишут заглавными буквами: MAX_SIZE.

Почему Python пишет NameError: name is not defined?

Переменной не присвоили значение до того места, где её используют, или в имени опечатка. Проверьте, что присваивание стоит выше по коду, и сверьте регистр: Total и total разные имена.

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!