Переменные и типы данных в Python: что хранить и как не запутаться

Разберём, как в Python работают переменные и какие типы данных реально пригодятся на практике. Без теории ради теории — только примеры и то, что помогает сразу писать рабочий код.


Что такое переменная в 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.
python

<

price = 199          # int
discount = 0.15      # float
final_price = price * (1 - discount)

Частая ошибка: путать деление. В Python 3 / 2 даёт 1.5 (float), а 3 // 2 — целочисленное деление, будет 1. Если нужна точность (например, для денег), лучше не полагаться на float без дополнительной обработки — но для простых расчётов float вполне годится.


Строки: str

Строка — это текст в кавычках. Кавычки могут быть одинарные или двойные, разницы нет, главное — пары совпадали.

python
first_name = "Alex"
last_name = 'Smith'
message = "Привет, " + first_name

Для подстановки значений удобнее использовать f‑строки — они читаются проще:

python
age = 27
message = f"Меня зовут {first_name}, мне {age} лет."

Если в строке нужны кавычки, используй другой тип кавычек снаружи или экранирование:

python
quote = 'Он сказал: "Привет"'
another = "Она ответила: \"Пока\""

Логический тип: bool

Всего два значения: True и False. Часто появляется как результат сравнения.

python
is_logged_in = True
is_admin = False
 
age = 18
is_adult = age >= 18   # будет True или False

Важно: True и False пишутся с большой буквы. true и false — это ошибка.


Списки: list

Список хранит несколько значений подряд. Элементы могут быть разных типов.

python
scores = [90, 85, 78, 92]
items = ["яблоко", "банан", "вишня"]
mixed = [1, "два", True, 3.5]

Обращение по индексу начинается с нуля:

python
first = scores[0]      # 90
last = scores[-1]      # последний элемент

Добавление и удаление:

python
items.append("груша")          # добавить в конец
items.pop()                    # удалить последний
items.remove("банан")          # удалить по значению

Списки изменяемые: можно менять элементы:

python
scores[1] = 88

Кортежи: tuple

Кортеж похож на список, но его нельзя менять после создания. Это удобно, когда данные должны оставаться неизменными.

python
point = (10, 20)
coordinates = (0, 0, 0)

Доступ такой же, по индексу:

python
x = point[0]
y = point[1]

Попытка изменить вызовет ошибку:

python
# point[0] = 15  # TypeError: кортеж неизменяем

Когда выбирать: список — если нужно добавлять/удалять/менять; кортеж — если данные фиксированы (координаты, настройки, пары ключ‑значение без словаря).


Словари: dict

Словарь хранит пары «ключ — значение». Ключи уникальны, по ним удобно быстро искать.

python
user = {
    "id": 123,
    "name": "Alex",
    "is_active": True,
    "scores": [90, 85]
}

Доступ по ключу:

python
name = user["name"]

Безопасный доступ (если ключа может не быть):

python
email = user.get("email")           # вернёт None, если ключа нет
email_default = user.get("email", "no@example.com")

Изменение и добавление:

python
user["is_active"] = False
user["city"] = "Москва"

Удаление:

python
del user["city"]

Словари удобны, когда нужно хранить структурированные данные (пользователь, заказ, настройки) и обращаться к ним по именам полей.


Множества: set

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

python
tags = {"python", "web", "api"}
tags.add("data")
tags.remove("web")

Преобразование списка в множество убирает повторы:

python
numbers = [1, 2, 2, 3, 3, 3]
unique = set(numbers)  # {1, 2, 3}

Обратно в список:

python
unique_list = list(unique)

Как не запутаться: простые правила выбора типа

  • Нужно хранить одно значение — переменная (int, float, str, bool).
  • Нужно несколько значений, которые будут меняться — list.
  • Нужно несколько фиксированных значений — tuple.
  • Нужно связать имена с данными — dict.
  • Нужно убрать дубликаты или проверить наличие — set.

Проверка типа и типичные ошибки

Чтобы узнать тип переменной:

python
type(age)        # <class 'int'>
type(name)       # <class 'str'>
type(user)       # <class 'dict'>

Частые проблемы:

  • Сложение несовместимых типов. Нельзя просто так сложить строку и число:
    python
    age = 27
    message = "Мне " + age + " лет"  # ошибка

    Правильно:

    python
    message = f"Мне {age} лет"
    # или
    message = "Мне " + str(age) + " лет"
  • Путаница с кавычками. Если строка начинается с ", она должна и закончиться ".
  • Индексы вне диапазона. scores[10] при списке из 4 элементов вызовет IndexError.
  • Обращение к несуществующему ключу в словаре. user["email"] при отсутствии ключа вызовет KeyError; лучше использовать .get().

Практический пример: собираем данные пользователя

Допустим, нужно сохранить и вывести данные о человеке:

python
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"]))

Добавить комментарий