В ключ кеша включайте namespace функции вместе с аргументами, например module + qualname + версия + нормализованный набор параметров. Тогда add(2,3) и multiply(2,3) не используют одну запись.
Как избежать коллизии кэша между разными функциями, которые вызываются с одинаковыми аргументами, например add(2, 3) и multiply(2, 3)?
В ключ кеша включайте namespace функции вместе с аргументами, например module + qualname + версия + нормализованный набор параметров. Тогда add(2,3) и multiply(2,3) не используют одну запись.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В ключ кеша включайте namespace функции вместе с аргументами, например module + qualname + версия + нормализованный набор параметров. Тогда add(2,3) и multiply(2,3) не используют одну запись.
Для метода может понадобиться идентичность или значимое состояние экземпляра; для персональных данных — пользователь или tenant. Нормализация должна различать типы и учитывать именованные аргументы по контракту. Можно также использовать отдельное хранилище кеша на декорированную функцию. Один repr(args) ненадёжен для сложных объектов. При изменении логики меняют версию namespace или инвалидируют записи; короткий хеш ключа тоже требует осознанной политики коллизий.