Переменные в Python
Переменные — это фундаментальное понятие в любом языке программирования, и Python не исключение. Они служат для хранения данных, которыми оперирует программа. В этой статье мы подробно разберём, что такое переменные в Python, как их создавать, какие существуют правила именования, а также рассмотрим типы данных и их особенности.
Что такое переменная в Python?
Простыми словами, переменная — это именованная ссылка на объект, хранящийся в памяти компьютера. Когда вы создаёте переменную, вы фактически даёте имя области памяти, в которой находятся ваши данные. Представьте переменную как бирку или ярлык, который вы прикрепляете к некоторому значению.
message = "Привет, мир!"
age = 25Здесь message и age — это переменные, которые ссылаются на строку "Привет, мир!" и целое число 25 соответственно.
Объявление переменных и оператор присваивания
В Python не нужно специально объявлять переменную до её использования. Переменная создаётся автоматически в момент первого присваивания ей значения. Для этого используется оператор присваивания = (один знак равенства).
Важно: Не путайте оператор присваивания = с оператором сравнения ==. В Python = означает «присвоить значение», а == — «проверить на равенство».
# Создание переменной
username = "Анна"
# Переприсваивание нового значения
username = "Мария"
print(username) # Выведет: МарияПеременная может быть переиспользована, и ей можно присваивать значения совершенно разных типов — это одна из особенностей Python.
Имена переменных
Чтобы код был понятным и поддерживаемым, важно правильно называть переменные. В Python действуют следующие правила именования:
-
Допустимые символы: латинские буквы (a-z, A-Z), цифры (0-9) и символ подчёркивания (
_). -
Первый символ: имя не может начинаться с цифры.
-
Регистр имеет значение: myvar, MyVar и MYVAR — это три разные переменные.
-
Запрещённые имена: нельзя использовать ключевые слова языка (if, for, while, True, False, None, and, or, not, def, class, return, import и другие).
Стили именования
В сообществе Python принято использовать стиль snake_case (все слова строчными буквами, разделённые подчёркиваниями):
user_name = "Иван" # Хороший стиль
total_price = 1500 # Хороший стиль
MAX_RETRIES = 5 # Константы обычно пишутся капсомРекомендации по именованию
-
Имя должно быть осмысленным и отражать суть хранимых данных. a, b, x — допустимы, но предпочтительнее count, total, user_age.
-
Для логических переменных (булевых) часто используют префиксы is_, has_, can_: is_ready = True, has_error = False.
-
Не используйте имена встроенных функций (например, print, input, len) в качестве имён переменных — это переопределит их и может привести к трудноуловимым ошибкам.
Каскадное присваивание
Python позволяет присвоить одно и то же значение сразу нескольким переменным в одной строке:
x = y = z = 0
print(x, y, z) # 0 0 0В этом случае все три переменные будут ссылаться на один и тот же объект в памяти (число 0). Для неизменяемых типов (числа, строки) это безопасно.
Множественное присваивание (распаковка)
Вы также можете присвоить значения разным переменным в одной строке:
a, b = 10, 20
print(a, b) # 10 20
# Элегантный обмен значениями
x, y = 5, 7
x, y = y, x
print(x, y) # 7 5Множественное присваивание работает и с другими итерируемыми объектами:
name, age, city = "Елена", 30, "Москва"
print(name, age, city)Динамическая типизация
Одна из ключевых особенностей Python — динамическая типизация. Это означает, что переменная не привязана к конкретному типу данных навсегда. Тип переменной определяется автоматически в момент присваивания значения и может меняться в процессе выполнения программы.
data = 42 # Сейчас это int (целое число)
print(type(data)) # <class 'int'>
data = "Пивет" # Теперь это str (строка)
print(type(data)) # <class 'str'>
data = 3.14 # Теперь это float (дробное число)
print(type(data)) # <class 'float'>Это очень гибко, но требует внимательности: вы можете случайно переприсвоить переменной значение неожиданного типа, что приведёт к ошибке при последующем использовании.
Изменяемые и неизменяемые типы
Все типы данных в Python делятся на изменяемые (mutable) и неизменяемые (immutable). Понимание этого различия критически важно.
Неизменяемые типы (immutable)
После создания объекта его значение нельзя изменить. Любая операция, которая кажется изменяющей объект, на самом деле создаёт новый объект. К ним относятся:
-
int (целые числа)
-
float (дробные числа)
-
complex (комплексные числа)
-
bool (логические значения)
-
str (строки)
-
tuple (кортежи)
-
frozenset (неизменяемое множество)
a = 10
b = a
a = a + 5 # Создаётся новый объект 15, переменная a теперь ссылается на него
print(a, b) # 15 10 (b продолжает указывать на старый объект 10)Изменяемые типы (mutable)
Объекты таких типов можно изменять на месте, без создания нового объекта. К ним относятся:
-
list (списки)
-
dict (словари)
-
set (множества)
-
пользовательские классы
list_a = [1, 2, 3]
list_b = list_a
list_a.append(4) # Изменяем объект по месту
print(list_a, list_b) # [1, 2, 3, 4] [1, 2, 3, 4] (обе переменные указывают на один и тот же изменённый объект)При работе с изменяемыми типами нужно быть осторожным с присваиванием: создаётся не копия объекта, а новая ссылка на него.
Типы данных переменных
Рассмотрим основные встроенные типы данных в Python.
Логические значения (bool)
Тип bool имеет всего два возможных значения: True (истина) и False (ложь). Часто используется в условиях и циклах.
is_valid = True
is_finished = False
is_greater = 10 > 5 # Результат: TrueЛюбое значение в Python может быть неявно преобразовано к логическому типу. False эквивалентны: None, 0, 0.0, пустые строки "", пустые коллекции [], {}, ().
Целые числа (int)
Тип int представляет целые числа. В Python нет ограничений на размер целого числа (кроме доступной памяти).
age = 30
count = -15
big_number = 12345678901234567890
# Поддержка разных систем счисления
binary = 0b1010 # 10 в двоичной
octal = 0o12 # 10 в восьмеричной
hexadecimal = 0xA # 10 в шестнадцатеричнойДробные числа (float)
Тип float представляет числа с плавающей точкой (приблизительно как double в других языках).
pi = 3.14159
temperature = -12.5
scientific = 1.5e-3 # 0.0015Из-за особенностей представления чисел с плавающей точкой в двоичной системе возможны небольшие погрешности:
print(0.1 + 0.2) # 0.30000000000000004, а не 0.3Для точных финансовых расчётов лучше использовать модуль decimal.
Комплексные числа (complex)
Python поддерживает комплексные числа "из коробки". Мнимая часть обозначается суффиксом j или J.
z1 = 2 + 3j
z2 = complex(1, -4) # 1 - 4j
print(z1.real, z1.imag) # 2.0 3.0
print(z1 + z2) # (3-1j)Строки (str)
Строки в Python — это неизменяемые последовательности символов в кодировке Unicode. Их можно создавать с помощью одинарных, двойных, тройных кавычек.
single_quoted = 'Привет'
double_quoted = "Мир"
multiline = """Это многострочная
строка, которая может занимать
несколько строк кода"""
# f-строки для вставки значений (Python 3.6+)
name = "Алексей"
greeting = f"Привет, {name}!" # Привет, Алексей!
# Методы строк
text = " Python "
print(text.strip()) # "Python"
print(text.upper()) # " PYTHON "
print("hello".capitalize()) # "Hello"Определение типа переменной: функция type()
Чтобы узнать текущий тип значения, на которое ссылается переменная, используйте встроенную функцию type():
var = 100
print(type(var)) # <class 'int'>
var = "Текст"
print(type(var)) # <class 'str'>
var = [1, 2, 3]
print(type(var)) # <class 'list'>Функция id() и работа со ссылками
Функция id() возвращает уникальный идентификатор объекта в памяти. Это полезно для понимания того, ссылаются ли переменные на один и тот же объект.
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(id(a), id(b)) # Одинаковые идентификаторы
print(id(a) == id(b)) # True
print(id(a) == id(c)) # False (хотя содержимое одинаковое, это разные объекты)Заключение
Мы рассмотрели все основные аспекты работы с переменными в Python:
-
Переменные — это ссылки на объекты в памяти.
-
Для создания переменной достаточно присвоить ей значение через =.
-
Имена должны быть осмысленными и следовать правилам snake_case.
-
Python — язык с динамической типизацией, тип переменной может меняться.
-
Важно различать изменяемые и неизменяемые типы, особенно при присваивании.
-
Основные типы данных: bool, int, float, complex, str.
Понимание устройства переменных и принципов работы с ними — это основа, на которой строится всё дальнейшее изучение Python. Практикуйтесь, экспериментируйте с разными типами данных и наблюдайте за поведением переменных в различных ситуациях.