python-ambito-de-variables

Qué es el ámbito de las variables en Python

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.

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.