Cómo utilizar variables globales en Python (palabra clave global)

Aprenda cómo funcionan las variables globales en Python. Comprenda el alcance de las variables, los espacios de nombres locales y globales y cómo modificar las variables utilizando la palabra clave global.

Pruebe esta solución en el Editor

Descripción general

Comprender los espacios de nombres y el alcance de las variables es fundamental para escribir software libre de errores en Python. El alcance determina qué partes de su programa pueden acceder o modificar una variable. Una variable declarada fuera de todas las funciones existe en el ámbito global y se puede leer en cualquier parte del módulo.

Sin embargo, surge un problema cuando una función intenta modificar (reasignar) una variable global. De forma predeterminada, cuando Python ve una asignación dentro de una función, asume que la variable es local de la función. Si intenta modificar una variable global sin declararla como global, Python creará una variable local con el mismo nombre, dejando la variable global sin cambios (o generará un `UnboundLocalError`).

Para decirle explícitamente a Python que desea modificar una variable en el espacio de nombres global en lugar de crear una local, debe declararla usando la palabra clave "global" dentro de la función. Si bien a veces es necesario utilizar variables globales, generalmente se considera una mala práctica en el diseño de software de gran tamaño porque dificulta el seguimiento y la depuración del estado.

Código y salida de ejecución

Este script demuestra la lectura de variables globales, la trampa de sombreado de variables y la modificación de variables globales utilizando la palabra clave global.

global_variables.py
Pruébelo en el editor
counter = 10 # Global variable

def read_counter():
    # Reading a global variable works out-of-the-box
    print("Reading global counter:", counter)

def shadow_counter():
    # Attempting to assign without 'global' creates a local variable
    counter = 20 # Shadowing
    print("Inside shadow function:", counter)

def modify_counter():
    global counter # Declaring we are writing to global scope
    counter = 50
    print("Inside modify function:", counter)

read_counter()
shadow_counter()
print("Counter after shadow function:", counter) # Remains 10

modify_counter()
print("Counter after modify function:", counter) # Now 50
Salida terminal
Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50

Implementación paso a paso

  • Declare variables a las que se debe acceder globalmente fuera del alcance de cualquier función.
  • Lea variables globales dentro de cualquier función sin agregar declaraciones especiales.
  • Utilice la palabra clave global (por ejemplo, contador global) dentro de las funciones si necesita modificar el valor de la variable global.
  • Limite el uso de variables globales para evitar la confusión del alcance y la contaminación del espacio de nombres.

Preguntas frecuentes

¿Qué es el sombreado variable en Python?

El sombreado ocurre cuando una variable declarada dentro de un ámbito local (como una función) tiene el mismo nombre que una variable en un ámbito global externo. La variable local enmascara la global, haciéndola temporalmente inaccesible dentro de ese ámbito.

¿Cuál es la diferencia entre palabras clave globales y no locales?

global se utiliza para acceder a variables definidas en el alcance del módulo más externo. nonlocal se usa dentro de funciones anidadas para acceder a variables definidas en el alcance de la función adjunta (externa).

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.