python 3.11+ · Python
El mensaje
UnboundLocalError: cannot access local variable 'count' where it is not associated with a value
Qué significa
Si una función asigna a un nombre en cualquier parte de su cuerpo, Python lo considera local a la función, y tú lo leíste antes de que la asignación se ejecutara. Aparece cuando esperabas ver el valor exterior con ese mismo nombre, o la primera vez que escribes una operación de lectura y escritura como count += 1. Inicializarlo dentro de la función con count = 0 es la respuesta habitual; si de verdad necesitas cambiar el valor a nivel de módulo, global count lo hace, al precio de un valor cuyos escritores se vuelven difíciles de rastrear. Hasta la 3.10 el mismo error decía 'local variable referenced before assignment'.
El arreglo
No hay un comando de una línea. La explicación dice qué revisar.
- Lo imprime
- python 3.11+
- Python
- 18
Un traceback de Python divide la respuesta en dos: la última línea dice qué falló y los marcos de arriba dicen dónde, así que leer solo la última línea te da el nombre y te quita el lugar; y en los errores por valor ausente, como NoneType y KeyError, la causa casi siempre está en un marco superior al que se rompió.
Cómo leer un mensaje de error
- Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
- Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
- Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
- La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
- Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.
Preguntas frecuentes
Q. ¿Qué significa «UnboundLocalError: cannot access local variable 'count' where it is not associated with a value»?
Si una función asigna a un nombre en cualquier parte de su cuerpo, Python lo considera local a la función, y tú lo leíste antes de que la asignación se ejecutara. Aparece cuando esperabas ver el valor exterior con ese mismo nombre, o la primera vez que escribes una operación de lectura y escritura como count += 1. Inicializarlo dentro de la función con count = 0 es la respuesta habitual; si de verdad necesitas cambiar el valor a nivel de módulo, global count lo hace, al precio de un valor cuyos escritores se vuelven difíciles de rastrear. Hasta la 3.10 el mismo error decía 'local variable referenced before assignment'.
Q. ¿Cómo se arregla?
No hay comando de una línea. La explicación de arriba dice qué revisar.
Q. ¿Qué herramienta lo imprime?
python 3.11+. Está en Python y el mensaje tiene 14 palabras.