Всем доброго дня. Всегда думал, что основная разница между изменяемыми и неизменяемыми типами - то что они соответственно unhashable и hashable. Но недавно узнал, что это не совсем так. Так вот возник вопрос, с какой целью идет разделение на изменяемые и неизменяемые типы? В частности, на примере tuple и list. Я, конечно, предполагаю что tuple лучше использовать для каких-то констант/данных, изменение которых нежелательно, но хотелось бы более развернутого ответа.
Ну и второй вопрос: где можно почитать про механизм подсчета хэша объекта-ключа при создании словаря?