El ámbito o scope de una variable se refiere a la parte del programa donde esa variable es accesible. En Python, hay dos tipos principales de alcance de variables: local y global.
- Variables locales: Son aquellas definidas dentro de una función. Su alcance está limitado a esa función y no son accesibles fuera de ella.
- Variables globales: Son aquellas definidas fuera de cualquier función o en un ámbito global. Pueden ser accesibles desde cualquier parte del programa (tanto dentro como fuera de las funciones).
Si quieres aprender más sobre Ámbito de las Variables
consulta el Curso de Introducción a la Programación leer más
Variables locales
Las variables definidas dentro de una función tienen un alcance local. Esto significa que solo son accesibles dentro de esa función. Si intentamos acceder a una variable local desde fuera de la función, Python generará un error.
def mi_funcion():
variable_local = "Hola Mundo"
print(variable_local)
mi_funcion()
# print(variable_local) # Esto generaría un error
En este ejemplo, variable_local
está definida dentro de la función mi_funcion
y solo es accesible dentro de esa función.
Variables globales
Las variables definidas fuera de cualquier función tienen un alcance global. Esto significa que son accesibles desde cualquier parte del programa (incluyendo dentro de funciones).
variable_global = "Soy global"
def imprimir_global():
print(variable_global)
imprimir_global() # Resultado: Soy global
print(variable_global) # También es accesible fuera de la función
En este caso, variable_global
está definida fuera de la función imprimir_global
, por lo que es una variable global y puede ser accesible desde cualquier parte del programa.
Uso de la palabra clave global
En algunos casos, es posible que necesitemos modificar una variable global desde dentro de una función. Para hacerlo, necesitamos utilizar la palabra clave global
.
variable_global = "Soy global"
def modificar_global():
global variable_global
variable_global = "Modificado dentro de la función"
print(variable_global)
modificar_global() # Resultado: Modificado dentro de la función
print(variable_global) # Ahora la variable global ha sido modificada
Al utilizar global variable_global
dentro de la función modificar_global
, le estamos indicando a Python que queremos modificar la variable global variable_global
.
Alcance de variables en funciones anidadas
Si definimos una función dentro de otra función, la función interna puede acceder a las variables locales de la función externa, pero no puede modificarlas directamente.
Sin embargo, si utilizamos la palabra clave nonlocal
, podemos modificar variables de la función externa.
def funcion_externa():
variable_externa = "Soy de la función externa"
def funcion_interna():
nonlocal variable_externa
variable_externa = "Modificado por la función interna"
print("Desde función interna:", variable_externa)
funcion_interna()
print("Desde función externa:", variable_externa)
funcion_externa()
En este ejemplo, funcion_interna
puede acceder y modificar la variable variable_externa
de funcion_externa
debido al uso de nonlocal
.