Variable local referenciada antes de la asignación en Python

Muhammad Waiz Khan 4 diciembre 2021
Variable local referenciada antes de la asignación en Python

Este tutorial explicará por qué se produce el error variable local referenciada antes de la asignación y cómo se puede resolver.

La local variable referenced before assignment ocurre cuando se hace referencia a alguna variable antes de la asignación dentro del cuerpo de una función. El error suele ocurrir cuando el código intenta acceder a la variable global. Como las variables globales tienen un alcance global y se puede acceder a ellas desde cualquier lugar dentro del programa, el usuario normalmente intenta utilizar la variable global dentro de una función.

En Python, no tenemos que declarar o inicializar la variable antes de usarla; una variable siempre se considera local de forma predeterminada. Por tanto, cuando el programa intente acceder a la variable global dentro de una función sin especificarla como global, el código devolverá el error variable local referenciada antes de la asignación, ya que la variable a la que se hace referencia se considera una variable local.

La Solución del error local variable referenced before assignment en Python

Podemos declarar la variable como global usando la palabra clave global en Python. Una vez que la variable se declara global, el programa puede acceder a la variable dentro de una función y no se producirá ningún error.

El siguiente código de ejemplo demuestra el escenario de código donde el programa terminará con el error “variable local referenciada antes de la asignación”.

count = 10


def myfunc():
    count = count + 1
    print(count)


myfunc()

Producción :

UnboundLocalError: local variable 'count' referenced before assignment

Necesitamos declarar la variable count como global usando la palabra clave global para resolver este error. El siguiente código de ejemplo demuestra cómo se puede resolver el error utilizando la palabra clave global en el escenario del código anterior.

count = 10


def myfunc():
    global count
    count = count + 1
    print(count)


myfunc()

Producción :

11