Dominando la palabra clave global en Python: Cómo y cuándo usarla
Dominando la palabra clave global en Python: Cómo y cuándo usarla
Esta guía explica la palabra clave global de Python, sus reglas, casos de uso prácticos y mejores prácticas para gestionar variables globales entre módulos.
¿Qué es la palabra clave global?
En Python, la palabra clave global le permite declarar que una variable dentro de una función se refiere a una variable a nivel de módulo en lugar de una nueva local. Esto es esencial cuando una función necesita leer o modificar una variable que existe fuera de su propio ámbito.
Reglas para usar global
- Las variables creadas dentro de una función son locales por defecto.
- Las variables definidas a nivel de módulo son globales automáticamente;
globales innecesario cuando solo se leen. - Use
globaldentro de una función cuando pretenda asignar a una variable a nivel de módulo. - Colocar
globalfuera de una función no tiene efecto.
Uso práctico de global
A continuación se muestran ejemplos ilustrativos que demuestran tanto los peligros como el enfoque correcto.
Ejemplo 1: Acceder a una variable global desde dentro de una función
c = 1 # variable global
def add():
print(c)
add()
Salida:
1
Aquí, c se lee correctamente porque no ocurre asignación dentro de add().
Ejemplo 2: Intentar modificar una variable global sin global
c = 1 # variable global
def add():
c = c + 2 # intenta modificar c
print(c)
add()
Salida:
UnboundLocalError: local variable 'c' referenced before assignment
El error ocurre porque Python trata c como una nueva variable local que se referencia antes de asignación.
Ejemplo 3: Modificar una variable global usando global
c = 0 # variable global
def add():
global c
c = c + 2
print("Dentro de add():", c)
add()
print("En main:", c)
Salida:
Dentro de add(): 2 En main: 2
Al declarar global c, la función actualiza la variable c a nivel de módulo, y el cambio es visible fuera de la función.
Compartir variables globales entre módulos Python
Para aplicaciones mayores, es común centralizar configuración en un módulo dedicado, como config.py. Otros módulos pueden importar y modificar estos valores, permitiendo estado consistente a través del programa.
Ejemplo 4: Variables globales entre módulos
Cree config.py:
a = 0
b = "vacío"
Cree update.py para modificar las globales:
import config
config.a = 10
config.b = "alfabeto"
Cree main.py para verificar los cambios:
import config
import update
print(config.a)
print(config.b)
Salida:
10 alfabeto
Este patrón mantiene el estado compartido en un lugar mientras permite actualizaciones controladas desde otros módulos.
Uso de global en funciones anidadas
Cuando una función anidada necesita modificar una variable que es local a una función externa, la palabra clave global aún puede aplicarse para crear una variable verdaderamente global.
Ejemplo 5: Variable global en función anidada
def foo():
x = 20
def bar():
global x
x = 25
print("Antes de llamar bar:", x)
print("Llamando bar ahora")
bar()
print("Después de llamar bar:", x)
foo()
print("x en main:", x)
Salida:
Antes de llamar bar: 20 Llamando bar ahora Después de llamar bar: 20 x en main: 25
Dentro de foo(), x permanece variable local. La función anidada bar() declara x como global, así la asignación afecta la variable x a nivel de módulo y es visible después de que foo() termina.
Aunque global puede ser útil, generalmente es mejor diseñar funciones que devuelvan nuevos valores en lugar de mutar estado global. Esto promueve código más claro y pruebas más fáciles. Para reglas detalladas del lenguaje, vea la documentación oficial de Python sobre la sentencia global.
python
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Entendiendo variables globales, locales y nonlocal en Python
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Dominando Iteradores en Python: Cómo Funcionan y Cómo Crear los Tuyos
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Dominando datetime en Python: Guía Práctica de Fechas, Horas y Zonas Horarias
- Visión general de Python: Lenguaje de alto nivel, legible, interactivo y orientado a objetos
- Tipos de variables en Python: Entendiendo y usando tipos de datos