Alcance de variables
1. Qué es el alcance de una variable? #
El alcance de una variable se refiere a la parte del programa en la que esa variable es accesible o puede ser utilizada. En Python, las variables pueden tener un alcance local o un alcance global.
2. Variables locales #
Una variable local es una variable que se define dentro de una función y solo es accesible dentro de esa función. No se puede acceder a ella desde fuera de la función.
Ejemplo de variable local #
1def saludar(): 2 mensaje = "Hola, mundo" # Variable local 3 print(mensaje) 4 5saludar() 6 7# Intentar acceder a 'mensaje' fuera de la función causará un error 8# print(mensaje) # Esto dará un error porque 'mensaje' es localSalida de consola Hola, mundo
- ¿Qué hace este código?:
- Define una función
saludarque contiene una variablemensaje. mensajees una variable local porque solo existe dentro de la funciónsaludar.- Si intentas usar
mensajefuera de la función, recibirás un error porque no está definida en ese ámbito.
- Define una función
3. Variables globales #
Una variable global es una variable que se define fuera de cualquier función y es accesible desde cualquier parte del programa, tanto dentro como fuera de las funciones.
Ejemplo de variable global #
1mensaje = "Hola, mundo" # Variable global 2 3def saludar(): 4 print(mensaje) # Se puede acceder a la variable global dentro de la función 5 6saludar() 7print(mensaje) # Se puede acceder a la variable global fuera de la funciónSalida de consola Hola, mundo Hola, mundo
- ¿Qué hace este código?:
- Define una variable global
mensaje. - La función
saludaraccede a esta variable global y la imprime. - La variable global
mensajetambién puede ser utilizada fuera de la función.
- Define una variable global
4. Modificar variables globales dentro de una función #
Si intentas modificar una variable global dentro de una función sin decirle explícitamente a Python que es global, Python creará una nueva variable local con el mismo nombre.
Ejemplo sin la declaración global #
1contador = 10 # Variable global 2 3def incrementar(): 4 contador = 5 # Crea una nueva variable local 5 contador += 1 6 print("Valor de 'contador' dentro de la función:", contador) 7 8incrementar() 9print("Valor de 'contador' fuera de la función:", contador)Salida de consola Valor de 'contador' dentro de la función: 6 Valor de 'contador' fuera de la función: 10
- ¿Qué hace este código?:
- Define una variable global
contador. - Dentro de la función
incrementar, intenta modificarcontador, pero en realidad está creando una nueva variable local con el mismo nombre. - La variable global
contadorno se ve afectada por los cambios dentro de la función.
- Define una variable global
Ejemplo con la declaración global #
Si realmente quieres modificar la variable global desde dentro de la función, debes usar la palabra clave global.
1contador = 10 # Variable global 2 3def incrementar(): 4 global contador # Decirle a Python que use la variable global 5 contador += 1 6 print("Valor de 'contador' dentro de la función:", contador) 7 8incrementar() 9print("Valor de 'contador' fuera de la función:", contador)Salida de consola Valor de 'contador' dentro de la función: 11 Valor de 'contador' fuera de la función: 11
- ¿Qué hace este código?:
- Usa la palabra clave
globalpara decirle a Python que se debe usar la variable globalcontadordentro de la funciónincrementar. - Ahora, cuando se modifica
contadordentro de la función, se modifica la variable global.
- Usa la palabra clave
Resumen del tema
Conceptos clave #
- Regla de Alcance LEGB: orden de resolución de nombres en Python: Local, Enclosing (funciones anidadas), Global (nivel de módulo), Built-in (nativos del lenguaje).
- Variables Locales: definidas dentro del cuerpo de una función; se destruyen al finalizar la invocación.
- Variables Globales y Modificación: para reasignar una variable global dentro de una función se requiere la sentencia explícita
global variable(de lo contrario se crea una variable local homónima con shadowing). - Variables No Locales (
nonlocal): empleada en funciones anidadas / closures para enlazar variables del ámbito envolvente inmediato.
Qué debes recordar #
Las variables definidas dentro de una función son locales por defecto; para reasignar variables del módulo dentro de una función se debe declarar global.