Lingua-e
Python

¿Qué significa UnboundLocalError?

← Errores

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

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ó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)  # 1

Errores 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