Можно создать дубликат:
Why are python strings and tuples are made immutable?Почему кортеж не изменен в Python?
Какой дизайн нижнего уровня делает кортеж не изменяемые в Python? Почему эта функция полезна?
Можно создать дубликат:
Why are python strings and tuples are made immutable?Почему кортеж не изменен в Python?
Какой дизайн нижнего уровня делает кортеж не изменяемые в Python? Почему эта функция полезна?
Несколько причин:
__hash__
, основанные на их содержимом, возвращаемые значения могут измениться по мере изменения содержимого, что нарушает контракт для хэш-значений.tuple
, который будет копироваться только при необходимости.Потому что в противном случае не было бы неизменяемого типа последовательности! Если вам нужен измененный кортеж, вы просто используете список.
Использование неизменяемых типов, когда это уместно, имеет различные преимущества в производительности, и вы не могли легко использовать dict
с ключами кортежа, если они были изменены.
Их значения хэша могут измениться? А? – wim
wim -> hash vaules меняется при изменении списка. Список может измениться, если в списке есть ссылка в другом месте. –
список не поддается вызову. – wim