Переменные и присваивание

Переменные и присваивание

В прошлом уроке вы запустили первую программу и вывели текст на экран. Но данные в программах редко бывают заранее известны и «зашиты» в код — чаще нам нужно их хранить, передавать и изменять. Именно для этого существуют переменные.

Что такое переменная

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

В Python создать переменную очень просто — достаточно написать имя, знак = и значение:

name = "Алиса"
age = 25
height = 1.72

Теперь name хранит строку "Алиса", age — целое число 25, а height — дробное 1.72. Чтобы использовать эти данные, достаточно написать имя переменной там, где нужно значение:

print(name)    # Алиса
print(age)     # 25

Знак = — это присваивание, не равенство

Здесь важный момент для тех, кто знаком с математикой. В Python знак = означает присваивание, а не проверку равенства. Выражение age = 25 нужно читать как «записать значение 25 в переменную age», а не как «age равно 25».

Сравнение в Python записывается двумя знаками == — мы познакомимся с ним в следующих модулях. Пока запомните: одинарный = — это «положить значение в ящик».

Изменение значения переменной

«Переменная» недаром так называется — её значение можно менять в любой момент. Когда вы присваиваете переменной новое значение, старое просто стирается:

score = 0
print(score)   # 0

score = 10
print(score)   # 10

score = 42
print(score)   # 42

Каждая строка score = ... перезаписывает предыдущее значение. После выполнения последней строки score равно 42. Интерпретатор всегда выполняет код сверху вниз — порядок строк имеет значение.

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

Python предъявляет конкретные требования к именам переменных:

  • Имя может содержать буквы (латинские или кириллицу), цифры и символ _.
  • Имя не может начинаться с цифры: 2score — ошибка, score2 — допустимо.
  • Имя чувствительно к регистру: name, Name и NAME — три разные переменные.
  • Нельзя использовать зарезервированные ключевые слова Python: if, for, while, return и другие. Python не позволит создать переменную с таким именем.
# Допустимые имена
user_name = "Алиса"
score1 = 100
_internal = "внутреннее"

# Недопустимые имена (приведут к SyntaxError)
# 1st_place = "золото"   # нельзя начинать с цифры
# my-value = 5           # дефис — это оператор вычитания, не часть имени

Стиль именования: snake_case

В Python принято использовать стиль snake_case: все слова в нижнем регистре, разделены подчёркиванием. Это соглашение сообщества, описанное в официальном руководстве по стилю PEP 8. Его нарушение не вызовет ошибку, но сделает код «непитонным».

# Хорошо — snake_case
first_name = "Иван"
total_price = 1500
is_active = True

# Не по-питоновски (хотя синтаксически работает)
firstName = "Иван"   # camelCase — принято в JavaScript
TotalPrice = 1500    # PascalCase — в Python для классов

Всегда выбирайте имена, отражающие смысл данных. x и tmp — плохие имена для количества пользователей. user_count — хорошее.

Несколько присваиваний за раз

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

# Одно и то же значение нескольким переменным
a = b = c = 0
print(a, b, c)  # 0 0 0

# Множественное присваивание (распаковка)
x, y = 10, 20
print(x)  # 10
print(y)  # 20

Хитрый приём с множественным присваиванием — обмен значений двух переменных без промежуточной третьей:

a = 1
b = 2
a, b = b, a   # поменять местами
print(a, b)   # 2 1

В большинстве языков для этого нужна третья переменная-буфер. Python справляется в одну строку.

Осторожно: не перекрывайте встроенные имена

В Python есть встроенные имена — функции и константы, которые доступны всегда без импорта: print, len, input, type и многие другие. Вы можете создать переменную с таким именем — Python не запретит:

print = "случайная строка"  # перекрыли встроенный print
print("Привет")             # TypeError: 'str' object is not callable

После этого print — уже не функция, а строка, и вызвать её нельзя. Вы фактически «сломали» print до конца текущего сеанса интерпретатора. Правило простое: не называйте переменные именами встроенных функций. Если вдруг случайно перекрыли — перезапустите интерпретатор.

Разделители в числах для читаемости

Большие числа трудно читать, особенно когда много нулей. Python разрешает вставлять подчёркивание _ внутри числа — это чисто визуально и на значение не влияет:

population = 12_500_000   # то же, что 12500000
pi_approx  = 3.141_592     # для наглядности

print(population)   # 12500000
print(pi_approx)    # 3.141592

Это удобно при работе с большими суммами, размерами файлов или научными данными.

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

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

name = "Алиса"
age = 25
pi = 3.14

print(type(name))   # <class 'str'>
print(type(age))    # <class 'int'>
print(type(pi))     # <class 'float'>

str, int, float — это типы данных Python. Мы подробно разберём каждый из них в следующих уроках этого модуля.

Вывод нескольких переменных через print

Функция print принимает несколько аргументов через запятую — это удобно, когда нужно вывести несколько переменных на одной строке:

first_name = "Иван"
last_name = "Петров"
age = 30

print(first_name, last_name, age)
# Иван Петров 30

По умолчанию аргументы разделяются пробелом. Разделитель можно изменить параметром sep:

print(first_name, last_name, sep="-")   # Иван-Петров
print(2026, 4, 29, sep=".")             # 2026.4.29

Параметр end управляет тем, что добавляется в конец вывода (по умолчанию — символ новой строки "\n"):

print("Шаг 1", end=" -> ")
print("Шаг 2", end=" -> ")
print("Шаг 3")
# Шаг 1 -> Шаг 2 -> Шаг 3

Типичная ошибка: использование до присваивания

Если вы попытаетесь использовать переменную, которой ещё нет, Python выдаст NameError:

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

Это значит: Python не знает, что такое result. Нужно сначала создать переменную, а потом использовать. Порядок строк имеет значение — переменная «существует» только начиная с той строки, где она получила значение.

Проверь себя

Что выведет этот код?

x = 5
x = x + 3
print(x)

Сначала x получает значение 5. Затем Python вычисляет правую часть x + 3 — это 5 + 3 = 8 — и записывает результат обратно в x. print(x) выведет 8.

Итог

  • Переменная — именованный контейнер для хранения данных; создаётся оператором =.
  • = означает «записать значение», а не математическое равенство.
  • Значение переменной можно изменить в любой момент; старое значение стирается.
  • Имена чувствительны к регистру, не могут начинаться с цифры и не могут совпадать с ключевыми словами.
  • Принятый стиль — snake_case; имена должны отражать смысл данных.
  • Python определяет тип данных автоматически — явных объявлений не нужно.

В следующем уроке познакомимся с числовыми типами данных Python: целыми числами int и дробными float, а также разберём арифметические операции.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике