Repaso
English
PythonIntermedioPY-36

Llamas a una función decorada con @functools.lru_cache pasando una list. ¿Qué pasa?

Opciones

  1. La lista se convierte en una tupla
  2. TypeError: unhashable type: 'list' (Opción correcta)
  3. La caché se omite en silencio
  4. 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.

Términos clave

Practica esta pregunta en Repaso