Изменяемый объект как ключ словаря: что произойдёт при попытке
Разработчик хочет кешировать результаты по набору параметров:
cache = {}
key = ["user", 42]
cache[key] = "result"
Что произойдёт при выполнении последней строки и почему?
- Код отработает: список будет автоматически преобразован в кортеж перед хешированием, ведь кортеж — неизменяемый аналог списка
- Код отработает, но при изменении списка запись потеряется: хеш пересчитывается заново и поиск уходит в другую корзину
- Код отработает: словарь хеширует список по его адресу в памяти, как любой объект без собственного `__hash__`
- Будет выброшено `TypeError: unhashable type: 'list'` — у изменяемого списка нет хеша, чтобы запись нельзя было потерять после его изменения
