Ответ
В 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'