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.
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.
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 50Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50Implementació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
Aprenda a manejar excepciones en Python usando los bloques try, except, else y finalmente. Escriba código Python libre de errores y resistente a fallos.
Cómo crear una clase en PythonAprenda a crear una clase en Python. Domine el constructor __init__, los métodos de instancia, la palabra clave self y la creación de instancias de objetos.
Recursos recomendados de Python
Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.
Variables de Python y tipos de datos explicados
Comprender las variables de Python y los tipos de datos principales (cadenas, enteros, flotantes, booleanos). Una guía completa para principiantes sobre la asignación de memoria en Python.
Hoja de trucos sobre métodos de cadenas de Python
Una guía de referencia completa para la manipulación de cadenas de Python. Domine el formateo, la búsqueda, la división, el reemplazo y la verificación de las propiedades de las cadenas.
Python vs JavaScript: ¿Qué lenguaje de programación es mejor?
Una comparación completa entre Python y JavaScript. Explore las diferencias de sintaxis, el rendimiento, los casos de uso (backend frente a frontend) y ejemplos de codificación.