Para Que Sirve Global En Python

En Python, la palabra clave global es una herramienta poderosa pero que a veces genera confusión. Sirve para modificar variables que están definidas fuera del ámbito local de una función. Vamos a explorar su utilidad con ejemplos claros.
¿Qué es el ámbito (scope) en Python?
Primero, hay que entender el concepto de ámbito. El ámbito se refiere a la región de un programa donde una variable es accesible. Python tiene diferentes tipos de ámbitos. Entre ellos encontramos el ámbito local y el ámbito global. El ámbito local es el de una función. El ámbito global es el del módulo o archivo actual.
Cuando definimos una variable dentro de una función, esa variable generalmente solo existe dentro de esa función. Intentar acceder a ella desde fuera de la función resultará en un error. Esto se debe a que Python trata las variables dentro de una función como locales a esa función.
Must Read
La palabra clave 'global' en acción
La palabra clave global nos permite acceder y modificar una variable global dentro de una función. Sin global, Python crearía una nueva variable local con el mismo nombre. Esto significa que la variable global original no se vería afectada.
Veamos un ejemplo sencillo:

variable_global = 10
def mi_funcion():
global variable_global
variable_global = 20
print("Dentro de la función:", variable_global)
mi_funcion()
print("Fuera de la función:", variable_global)
En este ejemplo, al declarar global variable_global dentro de mi_funcion(), le indicamos a Python que queremos usar la variable variable_global que está definida fuera de la función. Al asignarle el valor 20 dentro de la función, estamos modificando la variable global original. Por eso, al imprimirla fuera de la función, vemos que también ha cambiado a 20.
¿Qué ocurre si no usamos 'global'?
Si omitimos la palabra clave global en el ejemplo anterior, el comportamiento sería diferente:
variable_global = 10
def mi_funcion():
variable_global = 20
print("Dentro de la función:", variable_global)
mi_funcion()
print("Fuera de la función:", variable_global)
En este caso, dentro de mi_funcion(), Python crearía una nueva variable local llamada variable_global. La variable global original permanecería sin cambios. Al imprimir la variable dentro de la función, veríamos el valor 20, pero al imprimirla fuera de la función, seguiría siendo 10.

Cuándo usar 'global' (y cuándo no)
La palabra clave global debe usarse con moderación. Modificar variables globales desde dentro de las funciones puede hacer que el código sea más difícil de entender y mantener. En general, es mejor pasar variables como argumentos a las funciones y devolver los resultados.
Sin embargo, hay situaciones donde global puede ser útil. Por ejemplo, cuando se trabaja con variables que representan el estado de una aplicación o configuraciones globales que deben ser accesibles y modificables desde diferentes partes del código. También se usa en ciertos patrones de diseño, como el patrón Singleton.

Un ejemplo de un caso de uso válido podría ser el manejo de un contador global:
contador = 0
def incrementar_contador():
global contador
contador += 1
print("Contador:", contador)
incrementar_contador()
incrementar_contador()
incrementar_contador()
Alternativas a 'global'
Si quieres evitar el uso excesivo de global, considera las siguientes alternativas:
- Pasar variables como argumentos: Es la forma más clara y controlada de compartir datos entre funciones.
- Devolver valores: Permite que una función modifique datos y los devuelva para que la función que la llamó pueda usarlos.
- Clases y objetos: Agrupan datos y funciones relacionadas, lo que facilita la gestión del estado.
En resumen, global en Python permite modificar variables globales desde funciones. Úsala con cuidado y considera alternativas más estructuradas cuando sea posible. Comprender el ámbito de las variables es crucial para escribir código Python limpio y mantenible. Recuerda que la claridad y la legibilidad son fundamentales.
