Кортежи как неизменяемый тип данных

В литературе и документации написано, что кортеж — неизменяемый тип данных и что после создания кортежа его элементы невозможно изменить. Однако если один из элементов кортежа - список, то мы можем изменить элементы этого списка (поскольку списки относятся к изменяемым типам данных). Почему же утверждают, что кортеж неизменяемый тип данных, если при наличии в нем списка, элементы списка можно изменить? Ломается логика.


Ответы (1 шт):

Автор решения: Kromster

Нет не ломается. Кортеж хранит ссылку на список, а не сам список. Если вы попытаетесь обратится к кортежу по индексу и заменить в нём какой-то элемент - это вызовет ошибку (например, ссылку на один список ссылкой на другой). В то время как если добавить элемент в список, ссылка (адрес этого списка в памяти) не измениться, следовательно, считается, что объект не изменился, а значит логика не нарушена - мы не меняли никакой элемент в кортеже.

→ Ссылка