Ответ
В Python типы данных принято классифицировать по их изменяемости (mutability) — возможности изменить объект после его создания.
Неизменяемые (Immutable) типы
Значения этих объектов нельзя изменить после их создания. Любая операция, которая выглядит как изменение, на самом деле создает новый объект.
- Числовые типы:
int
— целые числа (e.g.,10
,-5
).float
— числа с плавающей точкой (e.g.,3.14
).complex
— комплексные числа (e.g.,1+2j
).
- Последовательности:
str
— строки (e.g.,'hello'
).tuple
— кортежи, неизменяемые списки (e.g.,(1, 'a', True)
).bytes
— последовательности байт.
- Логический тип:
bool
— булевы значения (True
,False
).
- Множества:
frozenset
— неизменяемая версия множества.
- Специальный тип:
NoneType
— имеет единственное значениеNone
.
Изменяемые (Mutable) типы
Эти объекты можно изменять «на месте» (in-place) после их создания, не создавая новый объект.
- Последовательности:
list
— списки, упорядоченные изменяемые коллекции (e.g.,[1, 'a', 3.14]
).
- Словари:
dict
— словари, коллекции пар «ключ-значение» (e.g.,{'key': 'value'}
).
- Множества:
set
— неупорядоченные коллекции уникальных элементов (e.g.,{1, 2, 3}
).
Пример различия:
# Изменяемый тип (list)
my_list = [1, 2, 3]
my_list.append(4) # Объект my_list изменился
print(my_list) # Вывод: [1, 2, 3, 4]
# Неизменяемый тип (str)
my_string = "hello"
# my_string[0] = 'H' # Это вызовет TypeError
new_string = my_string.capitalize() # Создается новый объект
print(my_string) # Вывод: 'hello'
print(new_string) # Вывод: 'Hello'