У меня есть метод, который принимает (среди прочего) словарь в качестве аргумента. Этот метод представляет собой синтаксический анализ строк, и словарь предоставляет замены для некоторых подстрок, поэтому он не должен изменяться.
Эта функция вызывается довольно часто, а для избыточных элементов я полагаю, что кеширование повысит ее эффективность.
Но, как вы могли догадаться, поскольку dict
является изменяемым и, следовательно, не хешируется, @functools.lru_cache
не может украсить мою функцию. Итак, как я могу это преодолеть?
Бонусная точка, если ей нужны только стандартные классы и методы библиотеки. В идеале, если в стандартной библиотеке существует какой-то frozendict
, который я не видел, это сделает мой день.
PS: namedtuple
только в крайнем случае, так как для этого потребуется большой синтаксический сдвиг.