variable local de Python a la que se hace referencia antes de la asignación

Cuando comienzas a introducir funciones en tu còdigo, es probable que encuentres un UnboundLocalError en alg√∫n momento. Este error se genera cuando intenta utilizar una variable antes de que se haya asignado en el contexto local .

En esta guìa, hablamos sobre qué significa este error y por qué se plantea. Analizamos un ejemplo de este error en acciòn para ayudarlo a comprender còmo puede resolverlo.

¿Qué es UnboundLocalError: ¿variable local referenciada antes de la asignaciòn?

Intentar asignar un valor a una variable que no tiene alcance local puede resultar en este error:

Python tiene una regla simple para determinar el alcance de una variable. Si se asigna una variable en una funciòn , esa variable es local. Esto se debe a que se asume que cuando define una variable dentro de una funciòn, solo necesita acceder a ella dentro de esa funciòn.

Hay dos ámbitos de variable en Python: local y global. Las variables globales son accesibles a través de un programa completo; solo se puede acceder a las variables locales dentro de la funciòn en la que se definieron originalmente.

Veamos còmo solucionar este error.

Un ejemplo de escenario

Vamos a escribir un programa que calcule la calificaciòn que un estudiante ha obtenido en clase.

Comenzamos declarando dos Variables:

El 81% de los participantes afirmaron que se sentìan más seguros sobre sus perspectivas laborales en tecnologìa después de asistir a un bootcamp. Asòciese a un bootcamp hoy.

El graduado promedio de bootcamp pasò menos de seis meses en la transiciòn de carrera, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Estas variables almacenan los valores numéricos y calificaciones con letras que un estudiante ha obtenido, respectivamente. De forma predeterminada, el valor de " letra " es " F & rdquo ;. A continuaciòn, escribimos una funciòn que calcula la calificaciòn con letras de un estudiante en funciòn de su calificaciòn numérica utilizando un " if " declaraciòn :

Finalmente, llamamos a nuestra funciòn:

Esta lìnea de còdigo imprime el valor devuelto por la funciòn calculate_grade () en la consola. Pasamos a través de un parámetro a nuestra funciòn: numérico. Este es el valor numérico de la calificaciòn que ha obtenido un estudiante.

Ejecutemos nuestro còdigo y veamos qué sucede:

Se ha generado un error.

La soluciòn

Nuestro còdigo devuelve un error porque hacemos referencia a " letra " antes de asignarla.

Hemos establecido el valor de " numérico " en 42. Nuestra declaraciòn if no establezca un valor para cualquier calificaciòn superior a 50. Esto significa que cuando llamamos a nuestra funciòn calculate_grade () , nuestra declaraciòn de retorno no conoce el valor al que nos referimos.

lo hacemos definir " letra " al inicio de nuestro programa. Sin embargo, lo definimos en el contexto global. Python trata " return letter " como intentar devolver una variable local llamada " letra & rdquo ;, no una variable global.

Resolvemos este problema de dos maneras. Primero, podemos agregar una instrucciòn else a nuestro còdigo. Esto asegura que declaramos " letter " antes de intentar devolverlo:

Intentemos ejecutar nuestro còdigo nuevamente:

Nuestro còdigo imprime correctamente la calificaciòn del estudiante.

Si está utilizando un " si " declaraciòn en la que declara una variable, debe asegurarse de que haya un " else " declaraciòn en su lugar. Esto asegurará que, incluso si ninguna de sus declaraciones if se eval√∫a como Verdadero, a√∫n puede establecer un valor para la variable con la que va a trabajar.

Alternativamente, podrìamos usar el " global " palabra clave para que nuestra palabra clave global esté disponible en el contexto local en nuestra funciòn calculate_grade () . Sin embargo, es probable que este enfoque dé lugar a un còdigo más confuso y a otros problemas. En general, las variables no deben declararse usando " global " a menos que sea absolutamente necesario . Su primer puerto de escala, y el principal, siempre debe ser asegurarse de que una variable esté definida correctamente.

En el ejemplo anterior, por ejemplo, no verificamos que la variable " letra " estuviera definida en todos los casos de uso.

¬°Eso es todo! Hemos corregido el error de la variable local en nuestro còdigo.

Conclusiòn

El UnboundLocalError: variable local referenciada antes de que se genere un error de asignaciòn cuando intentas asignar un valor a una variable local antes de que se haya declarado. Puede resolver este error asegurándose de que se declare una variable local antes de asignarle un valor.

Ahora está listo para resolver UnboundLocalError Python errores como un desarrollador profesional !

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method