lru_cache над функцией, которой передают список
from functools import lru_cache
@lru_cache(maxsize=None)
def total(items):
return sum(items)
print(total([1, 2, 3]))
Что произойдёт при запуске?
- Напечатается 6, а при повторном вызове с тем же списком сработает кэш и тело не выполнится
- Поднимется TypeError: список нехешируем, а ключ кэша строится из аргументов
- Напечатается 6, но кэш будет промахиваться при каждом вызове: списки сравниваются по значению
- Напечатается 6: lru_cache сам приводит изменяемые аргументы к кортежам перед сохранением
