Разберём, как в Python работают переменные и какие типы данных реально пригодятся на практике. Без теории ради теории — только примеры и то, что помогает сразу писать рабочий код.
Что такое переменная в Python
Переменная — это просто имя, к которому привязано какое‑то значение. В Python не нужно заранее говорить, какого типа будет переменная: ты просто присваиваешь значение, и язык сам понимает тип.
age = 25 name = "Alex" is_member = True
Здесь age, name, is_member — имена переменных, а справа — значения.
Важно: имя переменной должно начинаться с буквы или подчёркивания, без пробелов, только латиница, цифры и _. Например: user_age, _temp, count1. Не надо писать 1age или my var.
Основные типы данных и когда их использовать
Числа: int и float
int— целые числа:10,-3,0.float— дробные:3.14,-0.5,2.0.
<
price = 199 # int discount = 0.15 # float final_price = price * (1 - discount)
Частая ошибка: путать деление. В Python 3 / 2 даёт 1.5 (float), а 3 // 2 — целочисленное деление, будет 1. Если нужна точность (например, для денег), лучше не полагаться на float без дополнительной обработки — но для простых расчётов float вполне годится.
Строки: str
Строка — это текст в кавычках. Кавычки могут быть одинарные или двойные, разницы нет, главное — пары совпадали.
first_name = "Alex" last_name = 'Smith' message = "Привет, " + first_name
Для подстановки значений удобнее использовать f‑строки — они читаются проще:
age = 27 message = f"Меня зовут {first_name}, мне {age} лет."
Если в строке нужны кавычки, используй другой тип кавычек снаружи или экранирование:
quote = 'Он сказал: "Привет"' another = "Она ответила: \"Пока\""
Логический тип: bool
Всего два значения: True и False. Часто появляется как результат сравнения.
is_logged_in = True is_admin = False age = 18 is_adult = age >= 18 # будет True или False
Важно: True и False пишутся с большой буквы. true и false — это ошибка.
Списки: list
Список хранит несколько значений подряд. Элементы могут быть разных типов.
scores = [90, 85, 78, 92] items = ["яблоко", "банан", "вишня"] mixed = [1, "два", True, 3.5]
Обращение по индексу начинается с нуля:
first = scores[0] # 90 last = scores[-1] # последний элемент
Добавление и удаление:
items.append("груша") # добавить в конец items.pop() # удалить последний items.remove("банан") # удалить по значению
Списки изменяемые: можно менять элементы:
scores[1] = 88
Кортежи: tuple
Кортеж похож на список, но его нельзя менять после создания. Это удобно, когда данные должны оставаться неизменными.
point = (10, 20) coordinates = (0, 0, 0)
Доступ такой же, по индексу:
x = point[0] y = point[1]
Попытка изменить вызовет ошибку:
# point[0] = 15 # TypeError: кортеж неизменяем
Когда выбирать: список — если нужно добавлять/удалять/менять; кортеж — если данные фиксированы (координаты, настройки, пары ключ‑значение без словаря).
Словари: dict
Словарь хранит пары «ключ — значение». Ключи уникальны, по ним удобно быстро искать.
user = { "id": 123, "name": "Alex", "is_active": True, "scores": [90, 85] }
Доступ по ключу:
name = user["name"]
Безопасный доступ (если ключа может не быть):
email = user.get("email") # вернёт None, если ключа нет email_default = user.get("email", "no@example.com")
Изменение и добавление:
user["is_active"] = False user["city"] = "Москва"
Удаление:
del user["city"]
Словари удобны, когда нужно хранить структурированные данные (пользователь, заказ, настройки) и обращаться к ним по именам полей.
Множества: set
Множество хранит уникальные элементы, порядок не важен. Полезно, чтобы убрать дубликаты.
tags = {"python", "web", "api"} tags.add("data") tags.remove("web")
Преобразование списка в множество убирает повторы:
numbers = [1, 2, 2, 3, 3, 3] unique = set(numbers) # {1, 2, 3}
Обратно в список:
unique_list = list(unique)
Как не запутаться: простые правила выбора типа
- Нужно хранить одно значение — переменная (
int,float,str,bool). - Нужно несколько значений, которые будут меняться —
list. - Нужно несколько фиксированных значений —
tuple. - Нужно связать имена с данными —
dict. - Нужно убрать дубликаты или проверить наличие —
set.
Проверка типа и типичные ошибки
Чтобы узнать тип переменной:
type(age) # <class 'int'> type(name) # <class 'str'> type(user) # <class 'dict'>
Частые проблемы:
- Сложение несовместимых типов. Нельзя просто так сложить строку и число:
python
age = 27 message = "Мне " + age + " лет" # ошибка
Правильно:
pythonmessage = f"Мне {age} лет" # или message = "Мне " + str(age) + " лет"
- Путаница с кавычками. Если строка начинается с
", она должна и закончиться". - Индексы вне диапазона.
scores[10]при списке из 4 элементов вызоветIndexError. - Обращение к несуществующему ключу в словаре.
user["email"]при отсутствии ключа вызоветKeyError; лучше использовать.get().
Практический пример: собираем данные пользователя
Допустим, нужно сохранить и вывести данные о человеке:
first_name = "Alex" age = 27 is_subscribed = True hobbies = ["плавание", "программирование", "книги"] location = ("Москва", 55.7558, 37.6176) profile = { "name": first_name, "age": age, "subscribed": is_subscribed, "hobbies": hobbies, "location": location } print(f"Пользователь: {profile['name']}") print(f"Возраст: {profile['age']}") print("Хобби:", ", ".join(profile["hobbies"]))

