Переменные и присваивание
Переменные и присваивание
В прошлом уроке вы запустили первую программу и вывели текст на экран. Но данные в программах редко бывают заранее известны и «зашиты» в код — чаще нам нужно их хранить, передавать и изменять. Именно для этого существуют переменные.
Что такое переменная
Переменная — это имя, под которым хранится какое-либо значение. Представьте контейнер с этикеткой: этикетка — это имя переменной, а содержимое контейнера — её значение. Вы можете заглянуть в контейнер, когда нужно, или заменить содержимое на что-то другое.
В 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, а также разберём арифметические операции.