UnboundLocalError es una subclase de NameError que se lanza cuando se referencia una variable local antes de que se le haya asignado un valor. Python determina el ámbito de la variable en tiempo de compilación: si un nombre se asigna en cualquier parte de una función, se trata como local en toda esa función.
Por qué ocurre
- •Una variable se asigna dentro de una función pero se lee antes de que se alcance la línea de asignación.
- •Una asignación aumentada (+=, -=) sobre un nombre que existe en el ámbito envolvente pero no localmente.
- •Una rama condicional asigna la variable solo a veces, pero se lee incondicionalmente.
- •Usar el mismo nombre para una variable local y un parámetro de forma confusa.
Ejemplos
Código que causa el error
count = 0
def increment():
count += 1 # reads count before assigning
increment()Error en la terminal
UnboundLocalError: local variable 'count' referenced before assignment
Cómo solucionarlo
Declara la variable con global (para el nivel de módulo) o nonlocal (para el ámbito de función envolvente) antes de modificarla. Alternativamente, pasa el valor como parámetro y devuelve el nuevo valor en lugar de mutar el estado externo.
Código corregido
count = 0
def increment():
global count
count += 1
increment()
print(count) # 1Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis