En Python y en la mayoría de los lenguajes de programación, las variables declaradas fuera de una función se conocen como variables globales. Se puede acceder a estas variables tanto dentro como fuera de una función, ya que tienen un alcance global.

Un ejemplo de una variable global:

x = 10 

def mostrarX():
    print("El valor de x es", x)
    
mostrarX()
# El valor de x es 10

La variable x en el código anterior se declaró fuera de una función: x = 10. Utilizando la función mostrarX(), aún pudimos acceder a x porque se declaró en un alcance global.

Veamos otro ejemplo que muestra lo que pasa cuando declaramos una variable dentro de una función y tratamos de acceder a ella en otro lugar.

def X():
    x = 10 

X()

def mostrarX():
    print("El valor de x es", x)
    
mostrarX()
NameError: name 'x' is not defined

En el ejemplo anterior, declaramos x dentro de una función e intentamos acceder a ella en otra función. Esto resultó en un NameError porque x no se definió globalmente.

Las variables definidas dentro de las funciones se llaman variables locales. Su valor sólo se puede utilizar dentro de la función en la que se declaran.

Se puede cambiar el alcance de una variable local utilizando la palabra clave global, lo cual discutiremos en la próxima sección.

¿Para qué se usa la palabra clave global en Python?

La palabra clave global se utiliza principalmente por dos razones:

  1. Para modificar el valor de una variable global.
  2. Para hacer que una variable local sea accesible fuera del alcance local.

Echemos un vistazo a algunos ejemplos de cada uno de estos escenarios para que puedas comprenderlo mejor.

Ejemplo #1 - Modificando una variable global usando la palabra clave global

En la última sección en la que declaramos una variable global, no intentamos cambiar el valor de la variable. Todo lo que hicimos fue acceder y mostrar su valor en una función.

Intentemos cambiar el valor de una variable global y veamos qué pasa:

x = 10 

def mostrarX():
    x = x + 2
    print("El valor de x es", x)
    
mostrarX()
# local variable 'x' referenced before assignment

Como se puede ver arriba, cuando intentamos sumar 2 al valor de x, obtuvimos un error. Esto se debe a que solo podemos acceder pero no modificar x.

Para solucionar eso, utilizamos la variable global de esta forma:

x = 10 

def mostrarX():
    global x
    x = x + 2
    print("El valor de x es", x)
    
showX()
# El valor de x es 12

Al usar la palabra clave global, pudimos modificar el valor de x y sumarle 2.

Ejemplo #2 - Cómo hacer que una variable local sea accesible fuera de su alcance local usando la palabra clave global

Cuando creamos una variable dentro de una función, no fue posible utilizar su valor en otra función porque el compilador no reconoció la variable.

Así es cómo podemos solucionarlo utilizando la palabra clave global:

def X():
    global x
    x = 10 
    
X()
    
def mostrarX():
    print("El valor de x es ", x)
    
mostrarX()
# El valor de x es 10

Para hacer posible que x sea accesible fuera de su alcance local, lo declaramos utilizando la palabra clave global: global x. Después, le asignamos un valor a x. Luego, llamamos a la función que utilizamos para declararla: X().

Cuando llamamos a la función mostrarX(), que imprime el valor de x declarado en la función X(), no obtuvimos un error porque x tiene un alcance global.

Resumen

En este artículo, hablamos de las variables globales y locales en Python.

Los ejemplos mostraron cómo declarar tanto variables globales como locales.

También discutimos la palabra clave global, que te permite modificar el valor de una variable global o hacer que una variable local sea accesible fuera de su alcance.

¡Feliz programación!