Alcance de las variables en Python

Una cuestión importante a considerar al utilizar funciones es el alcance de las variables en Python. En particular, podemos utilizar variables que tengan el mismo nombre fuera y dentro de la función. Para eso tenemos que entender la diferencia entre alcance local y alcance global de una variable. Ese es precisamente el tema que abordaremos en este post.

Alcance de las variables

En primer lugar, podemos decir que las variables declaradas fuera de una función tienen alcance global. Por otro lado, aquellas definidas dentro de una función tienen alcance local a la misma. En general se dice que las primeras son variables globales y las segundas variables locales. Las variables globales son válidas durante la ejecución del programa, mientras que las locales pueden usarse únicamente dentro de la función en la que son declaradas.

Las variables locales no pueden accederse fuera de la función. Sin embargo, dentro de una función sí se puede acceder a variables declaradas en el alcance (o scope) global. El ejemplo que compartimos a continuación y que es ilustrado en la Fig. 1 servirá para aclarar estos conceptos.

persona = 'Gabriel'

def Saludo(nombre):
    comienzoSaludo = 'Hola'
    print(comienzoSaludo, persona)

# Usamos la variable persona al llamar la función:
Saludo(person)

# No podemos utilizar la variable comienzoSaludo fuera de la función
print(comienzoSaludo, persona)

En este ejemplo, la variable persona está en el scope global de la función. Por otro lado, comienzoSaludo es local dentro de la función Saludo. Por ese motivo, podemos utilizar persona cuando llamamos a la función. Sin embargo, no podemos utilizar comienzoSaludo fuera de la función. Esa es la razón por la que el último print arroja un error:

Alcance de las variables en un programa Python
Figura 1 – Alcance de las variables en un programa Python

Como podemos observar, la función Saludo se ejecutó correctamente. También, al intentar acceder a una variable local desde el scope global encontramos el error que anticipamos.

Espero que este post les haya resultado útil. ¡No olviden suscribirse al blog para no perderse los próximos!

Deja una respuesta