Какие типы данных есть в Python? На какие две большие группы их можно разделить?

🔹 Типы данных в Python

В Python всё является объектом, и у каждого объекта есть тип. Тип данных определяет, какие значения может принимать переменная и какие операции можно с ней выполнять.

🔸 Основные две группы типов:1. Изменяемые (mutable) — объекты, чьё содержимое можно изменить после создания.2. Неизменяемые (immutable) — объекты, которые нельзя изменить после создания; любые изменения создают новый объект.

🔹 Неизменяемые типы данных (Immutable):

Эти объекты нельзя изменить "на месте" — попытка изменить значение приводит к созданию нового объекта.

✅ Примеры:

Тип Описание
int Целые числа: 1, -5, 0
--- ---
float Числа с плавающей точкой: 3.14, -0.001
--- ---
complex Комплексные числа: 2 + 3j
--- ---
bool Логические значения: True, False
--- ---
str Строки: "hello", '123'
--- ---
tuple Кортежи (неизменяемые списки): (1, 2, 3)
--- ---
frozenset Неизменяемое множество
--- ---

📌 Примеры:

x = "hello"
x\[0\] = 'H' # ❌ Ошибка: строки неизменяемы
a = (1, 2, 3)
a\[1\] = 10 # ❌ Ошибка: кортежи неизменяемы

🔹 Изменяемые типы данных (Mutable):

Можно изменить содержимое объекта без создания нового объекта.

✅ Примеры:

Тип Описание
list Списки: [1, 2, 3]
--- ---
dict Словари (ключ–значение):
--- ---
set Множества:
--- ---
bytearray Изменяемый массив байтов
--- ---

📌 Примеры:

lst = \[1, 2, 3\]
lst\[0\] = 10 # ✅ Работает — список изменяемый
d = {"name": "Alice"}
d\["name"\] = "Bob" # ✅ Словарь изменяемый

🔹 Все встроенные типы данных Python

Ниже собраны основные встроенные типы, разделённые по категориям:

1. Числовые типы (numeric types):

  • int — целые числа

  • float — числа с плавающей точкой

  • complex — комплексные числа

2. Последовательности (sequences):

  • str — строки

  • list — списки

  • tuple — кортежи

  • range — диапазоны (обычно используется в циклах)

3. Множества (sets):

  • set — изменяемое множество

  • frozenset — неизменяемое множество

4. Отображения (mappings):

  • dict — словари

5. Булев тип:

  • bool — логические значения (True, False)

6. Байтовые типы:

  • bytes — неизменяемая последовательность байтов

  • bytearray — изменяемая последовательность байтов

  • memoryview — представление на буфер байтов

7. NoneType:

  • None — специальный тип, обозначающий "ничего", "отсутствие значения"

🔹 Дополнительно: составные и пользовательские типы

Python позволяет создавать:

  • Пользовательские классы: создаются с помощью class, наследуются от object.

  • **Коллекции из модуля collections:
    **

    • deque — двусторонняя очередь

    • defaultdict, Counter, OrderedDict и др.

🔹 Как проверить тип в Python?

Используются функции:

type(x) # показывает тип

isinstance(x, тип) # проверяет принадлежность

Пример:

x = \[1, 2, 3\]
print(type(x)) # <class 'list'>
print(isinstance(x, list)) # True

🔹 Почему важно различать изменяемые и неизменяемые?

  1. **Передача в функции:
    **

    • Изменяемые объекты могут измениться внутри функции.

    • Неизменяемые не меняются — можно быть уверенным в их сохранности.

  2. **Хешируемость:
    **

    • Неизменяемые типы могут быть ключами словаря (например, tuple, str).

    • Изменяемые — не могут быть ключами (например, list или dict), так как их хеш может меняться.

🔹 Таблица сравнения изменяемых и неизменяемых типов:

Тип данных Изменяемость Пример
int ❌ Нет 5
--- --- ---
float ❌ Нет 3.14
--- --- ---
bool ❌ Нет True
--- --- ---
str ❌ Нет "Python"
--- --- ---
tuple ❌ Нет (1, 2, 3)
--- --- ---
frozenset ❌ Нет frozenset([1])
--- --- ---
list ✅ Да [1, 2]
--- --- ---
dict ✅ Да {"a": 1}
--- --- ---
set ✅ Да {1, 2}
--- --- ---
bytearray ✅ Да bytearray(b"abc")
--- --- ---

🔹 Заключение

Типы данных в Python — это основа языка, от которой зависит поведение переменных, возможность их изменения, и способы использования в алгоритмах. Все типы делятся на две большие категории:

  • Неизменяемые (immutable): безопасны, предсказуемы, можно использовать в качестве ключей.

  • Изменяемые (mutable): удобны при работе с коллекциями, изменяются "на месте", требуют осторожности.