Llamas a una función decorada con @functools.lru_cache pasando una list. ¿Qué pasa?
Opciones
- La lista se convierte en una tupla
- TypeError: unhashable type: 'list' (Opción correcta)
- La caché se omite en silencio
- Funciona, pero nunca acierta en caché
Respuesta
TypeError: unhashable type: 'list'
Por qué
lru_cache recuerda resultados en un diccionario, usando los argumentos como clave.
Las claves de un diccionario deben ser hashable (no cambiar). Una lista puede cambiar, así que no es hashable y obtienes un TypeError.
Pasa una tupla en lugar de una lista.
Recuerda
Los argumentos de una función con caché deben ser hashable.