Lingua-e
← Errores
Python

Qué significa UnboundLocalError y cómo solucionarlo

Referencia del error

UnboundLocalError

Lenguaje

Python

Severidad

Media

Cuándo ocurre

UnboundLocalError es una subclase de NameError que se lanza cuando se referencia una variable local antes de que se le haya asignado un valor.

Posibles soluciones

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.

Errores relacionados

Más detalles

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.

Posibles soluciones

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.

Ejemplos

Python

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ódigo corregido

count = 0

def increment():
    global count
    count += 1

increment()
print(count)  # 1

Practica en inglés

¿Cómo le explicarías un UnboundLocalError a un compañero dev? Elige la frase correcta:

"I hit an error...

¿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