Изменяемые и неизменяемые типы данных
1. Изменяемые типы данных (mutable)
Их содержимое можно изменять после создания.
Примеры:
list,dict,set, пользовательские объекты (классы).
Особенности:
Можно добавлять, удалять, изменять элементы.
При копировании важно различать поверхностную и глубокую копию.
Хешироваться не могут, поэтому не могут быть ключами словарей.
Примеры:
lst = [1, 2, 3]
lst[0] = 10 # изменяем элемент
lst.append(4) # добавляем элемент
lst.remove(2) # удаляем элемент
print(lst) # [10, 3, 4]
d = {"a": 1, "b": 2}
d["a"] = 10 # изменяем значение2. Неизменяемые типы данных (immutable)
Их содержимое нельзя изменить после создания.
Примеры:
int,float,bool,str,tuple,frozenset,bytes.
Особенности:
Любая операция, которая "меняет" объект, на самом деле создаёт новый объект.
Можно использовать в качестве ключей словарей и элементов множеств.
Примеры:
3. Как отличать mutable и immutable
Изменяемость
Да
Нет
Копирование
Поверхностное vs глубокое
Не требуется, объект не меняется
Хешируемость
Нет
Да (можно использовать как ключ в dict или элемент set)
Примеры
list, dict, set, bytearray
int, float, bool, str, tuple, frozenset, bytes
4. Применение в автотестах
Mutable удобно для изменения тестовых данных, подготовки сценариев:
Immutable удобно для фиксации константных данных и ключей словарей:
Внимание к копированию:
💡 Вывод:
Mutable — изменяемые объекты (list, dict, set), их можно менять на месте.
Immutable — неизменяемые объекты (int, str, tuple), любые операции создают новый объект.
Понимание этих типов важно для правильной работы с данными в автотестах и предотвращения ошибок при копировании и сравнении объектов.
Last updated
Was this helpful?