Python UnboundLocalerRor

Python UnboundLocalerRor

El UnboundLocalerRor de Python parece muy confuso cuando los recién llegados a Python lo experimentan por primera vez. Sin embargo, es bastante fácil. Un UnboundLocalerRor puede ocurrir debido a dos razones en Python, una es cuando intenta acceder al valor de una variable antes de que se asigne, y la segunda es cuando Python no puede diferenciar entre variables globales y locales.

Esta publicación actuará como su guía para resolver el UnboundLocalError de Python con posibles soluciones.

Razón 1: Acceder a la variable local antes de asignar valor

Normalmente, cuando el programador no funciona dentro de ninguna función o variables de alcance local, intentar acceder a una variable antes de inicializarlo con un valor devuelve el siguiente error:

Sin embargo, cuando se realiza el mismo error con las variables locales, por ejemplo, dentro de una función, entonces el programa devuelve el UnboundLocalError, lo que significa que no pudo encontrar la variable local al acceder a ella. Para demostrar esto, el siguiente código:

Def func ():
Imprimir (x)
x = 420
func ()

Ejecutado producirá el siguiente resultado:

Solución: Fijar orden de acceso de la variable local

Para evitar encontrar este error, simplemente asegúrese de inicializar la variable local con algún valor antes de intentar acceder a él. El código correcto para el ejemplo anterior es el siguiente:

Def func ():
x = 420
Imprimir (x)
func ()

La variable "X"Se le asigna un valor antes de acceder a su acceso, y ahora, cuando se ejecuta este programa, produce el siguiente resultado en el terminal:

La salida verifica que ha solucionado con éxito el UnboundLocalError causado por el orden incorrecto de acceder a la variable local.

Razón 2: Python no puede diferenciar entre variables locales y globales

Esta razón es un poco confusa para la mayoría de los entusiastas de Python y nada está lógicamente incorrecto en el programa. Para demostrar este error de una manera no confusa, tomemos el siguiente código para acceder a una variable global dentro de una función:

x = 420
Def func ():
Imprimir (x)
func ()

Este código produce la salida sin error, que es la siguiente:

Pero cuando se realiza alguna tarea a la variable global dentro de la función, como:

x = 420
Def func ():
Imprimir (x)
x = 33
func ()

Comienza a producir el UnboundLocalError como se muestra a continuación:

La razón de esto es que tan pronto como se realiza un cambio en la variable global, el programa cree que el usuario quiere acceder y cambiar una variable local, debido a la cual no encuentra esa variable local y devuelve el UnboundLocalError.

Solución: use la palabra clave global para resolver confusión

La mejor manera de resolver este problema es simplemente usar la palabra clave "global" al comienzo de la función para decirle al programa que esta variable local está vinculada con la variable global. Para demostrar esta solución, tome el siguiente código:

x = 420
Def func ():
Global X
Imprimir (x)
x = 30
func ()

Esto producirá la siguiente salida en el terminal cuando se ejecute:

Has aprendido con éxito las razones de UnboundLocalError junto con su solución.

Conclusión

El UnboundLocalError puede ser causado al tratar de acceder a una variable local antes de asignarle algún valor, o de otra manera, puede ser causado cuando el programa no puede diferenciar si el usuario desea acceder a la variable local o la variable global. Ambas razones se han explicado junto con su demostración y solución a fondo en esta publicación.