Skip to content

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 # уникальные объекты

Особенности#

Неизменяемые объекты могут использоваться в качестве ключей словарей и элементов множеств, так как их хеш-значение не меняется.