Python UnboundLocalError

El UnboundLocalError de Python parece muy confuso cuando los novatos de Python lo encuentran por primera vez. Sin embargo, es muy simple. Un UnboundLocalError puede ocurrir en Python por dos razones, en primer lugar, cuando intenta acceder al valor de una variable antes de que se asigne y, en segundo lugar, cuando Python no puede distinguir entre variables globales y locales. Esta publicación sirve como guía para resolver UnboundLocalError de Python con posibles soluciones.

Contenidos

Motivo 1: acceso a la variable local antes de la asignación de valor

A menos que el programador esté trabajando dentro de funciones o variables de ámbito local, intentar acceder a una variable antes de inicializarla en un valor generalmente arroja el siguiente error:

Sin embargo, si se comete el mismo error con variables locales, digamos dentro de una función, el programa devolverá UnboundLocalError, lo que significa que no pudo encontrar la variable local al acceder a ella. Para demostrar esto, se ejecuta el siguiente código: def func(): print(x) x = 420func() para producir el siguiente resultado:

Solución: Determinar el orden de acceso de las variables locales

Para evitar este error, solo asegúrese de inicializar la variable local con un valor antes de intentar acceder a ella. El código correcto para el ejemplo anterior es el siguiente: def func(): x = 420 print(x) func() La variable «X‘ se le asigna un valor antes de que se acceda a él, y cuando este programa se ejecuta ahora, produce el siguiente resultado en la terminal:

El resultado confirma que ha resuelto con éxito el UnboundLocalError causado por el orden incorrecto al acceder a la variable local.

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

Esta razón es un poco confusa para la mayoría de los nuevos entusiastas de Python y, lógicamente, el programa no tiene nada de malo. 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 = 420def func(): print(x) func() Este código produce la salida sin errores de la siguiente manera:

Pero cuando se realiza una asignación a la variable global dentro de la función, como

La razón es que tan pronto como se realiza un cambio en la variable global, el programa piensa que el usuario desea acceder y cambiar una variable local, por lo que no encuentra esa variable local y devuelve UnboundLocalError.

Solución: use una palabra clave global para resolver la 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 a la variable global. Para demostrar esta solución, considere el siguiente código: x = 420def func(): global x print(x) x= 30func() Esto produce el siguiente resultado en el terminal cuando se ejecuta:

Ha aprendido con éxito los motivos de UnboundLocalError junto con su solución.

Diploma

El UnboundLocalError puede ser causado por intentar acceder a una variable local antes de que se le haya asignado un valor, o puede ser causado de otra manera cuando el programa no puede saber si el usuario está accediendo a la variable local o si desea acceder a la variable global. Estas dos razones se han explicado en detalle en esta publicación junto con su demostración y solución.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.