Mutable
Изменяемые типы данных — это те, чье содержимое можно изменить после создания
(например, списки list, словари dict, множества set). Неизменяемые типы данных — это те, чье содержимое
нельзя изменить после создания (например, числа int, float, строки str, кортежи tuple).
Подробный ответ#
Изменяемые (mutable) типы:
Объекты этих типов могут быть изменены "на месте" после их создания.
Это означает, что вы можете модифицировать их содержимое, не создавая новый объект.
my_list = [1, 2]
my_list.append(3)
print(my_list) # [1, 2, 3]
my_dict = {"a": 1}
my_dict["b"] = 2
print(my_dict) # {'a': 1, 'b': 2}
my_set = {1, 2}
my_set.add(3)
print(my_set) # {1, 2, 3}
Неизменяемые (immutable) типы:
Объекты этих типов не могут быть изменены после их создания.
Любая операция, которая, казалось бы, изменяет неизменяемый объект, на самом деле создает новый объект.
x = 5
x = x + 1 # создается новый объект 6, 5 остается неизменным
y = 3.14
y = y * 2 # та же логика, что и с int
s = "hello"
s = s + " world" # s ссылается на новый объект
my_tuple = (1, 2)
my_tuple = my_tuple + (3,) # создается новый кортеж (1, 2, 3)
True, False, None # уникальные объекты
Особенности#
Неизменяемые объекты могут использоваться в качестве ключей словарей и элементов множеств, так как их хеш-значение не меняется.