Ambito de variables
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).
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.
1
2
3
4
5
6
def mi_funcion():
variable_local = "Soy local"
print(variable_local) # Accede a la variable local
mi_funcion()
print(variable_local) # Esto causará un error, ya que variable_local no está definida fuera de la función
En este ejemplo, la línea 6
print(variable_local)genera el error:
1 2 3 4 Traceback (most recent call last): File "main.py", line 6, in <module> print(variable_local) NameError: name 'variable_local' is not defined
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).
1
2
3
4
5
6
7
variable_global = "Soy global"
def mi_funcion():
print(variable_global) # Accede a la variable global
mi_funcion() # Resultado: Soy global
print(variable_global) # FuncionaTambién es accesible fuera de la función
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.
1
2
3
4
5
6
7
8
9
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_globaldentro de la funciónmodificar_global, le estamos indicando a Python que queremos modificar la variable globalvariable_global.
Alcance 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.
1
2
3
4
5
6
7
8
9
10
11
12
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_internapuede acceder y modificar la variablevariable_externadefuncion_externadebido al uso denonlocal.