Я работаю с xlwt
, который имеет ограничение 4k на то, сколько стилей можно определить в документе excel.Как хэш * args ** kwargs для кеша функции?
Обычно, один создает стиль, как так:
style = xlwt.easyxf("font: bold 1")
который я просто заменен
def cached_easyxf(self, format):
return self._cache.setdefault(format, xlwt.easyxf(format))
, который работает отлично. Теперь я выяснил, что мне нужно иногда передавать аргументы ключевых слов, которые заставили меня задуматься: как я должен хэшировать подпись args/kwargs?
Должен ли я создать ключ кеша на основе str (значение)? Соленый огурец? Что является самым надежным?
Для моей ситуации это выглядит как я могу просто преобразовать ключ/значение строк и добавить его в мои ключи ... но я теперь интересно родовой способом справиться с этим с сказать unhashable типа как arg=[1, 2, 3]
def cached_call(*args, **kwargs):
return cache.get(what_here)
cached_call('hello')
cached_call([1, 2, 3], {'1': True})
Спасибо за ответ Раймонд! Очень ценится –
Будет ли следующая работа так же: 'key = (args, tuple (sorted (kwds.items())))'? Или это медленнее из-за внутренних кортежей? – max
@max Да, это сработает. И да, дополнительные указатели замедлят его, а также потребляют немного больше памяти. –