En este artículo, aprenderá sobre la palabra clave global, la variable global y cuándo utilizar palabras clave globales.
Antes de leer este artículo, asegúrese de tener algunos conceptos básicos de las variables globales, locales y no locales de Python.
¿Cuál es la palabra clave global?
En Python, la global
palabra clave le permite modificar la variable fuera del alcance actual. Se utiliza para crear una variable global y realizar cambios en la variable en un contexto local.
Reglas de palabra clave global
Las reglas básicas para la global
palabra clave en Python son:
- Cuando creamos una variable dentro de una función, es local por defecto.
- Cuando definimos una variable fuera de una función, es global por defecto. No es necesario utilizar
global
palabras clave. - Usamos
global
palabras clave para leer y escribir una variable global dentro de una función. - El uso de
global
palabras clave fuera de una función no tiene ningún efecto.
Uso de palabra clave global
Pongamos un ejemplo.
Ejemplo 1: acceder a una variable global desde dentro de una función
c = 1 # global variable def add(): print(c) add()
Cuando ejecutamos el programa anterior, la salida será:
1
Sin embargo, es posible que tengamos algunos escenarios en los que necesitemos modificar la variable global desde dentro de una función.
Ejemplo 2: modificar variable global desde dentro de la función
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Cuando ejecutamos el programa anterior, la salida muestra un error:
UnboundLocalError: variable local 'c' referenciada antes de la asignación
Esto se debe a que solo podemos acceder a la variable global pero no podemos modificarla desde dentro de la función.
La solución para esto es usar la global
palabra clave.
Ejemplo 3: Cambiar la variable global desde dentro de una función usando global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Cuando ejecutamos el programa anterior, la salida será:
Dentro de add (): 2 En principal: 2
En el programa anterior, definimos c como una palabra clave global dentro de la add()
función.
Luego, incrementamos la variable c en 1
, es decir c = c + 2
. Después de eso, llamamos a la add()
función. Finalmente, imprimimos la variable global c.
Como podemos ver, el cambio también ocurrió en la variable global fuera de la función c = 2
,.
Variables globales en los módulos de Python
En Python, creamos un solo módulo config.py
para contener variables globales y compartir información entre módulos de Python dentro del mismo programa.
Así es como podemos compartir variables globales a través de los módulos de Python.
Ejemplo 4: compartir una variable global entre módulos de Python
Crea un config.py
archivo para almacenar variables globales
a = 0 b = "empty"
Crea un update.py
archivo para cambiar las variables globales
import config config.a = 10 config.b = "alphabet"
Cree un main.py
archivo para probar los cambios de valor
import config import update print(config.a) print(config.b)
Cuando ejecutamos el main.py
archivo, la salida será
10 alfabeto
En lo anterior, hemos creado tres archivos: config.py
, update.py
, y main.py
.
El módulo config.py
almacena variables globales de ay b. En el update.py
archivo, importamos el config.py
módulo y modificamos los valores de ay b. De manera similar, en el main.py
archivo, importamos tanto config.py
como update.py
module. Finalmente, imprimimos y probamos los valores de las variables globales, ya sea que hayan cambiado o no.
Global en funciones anidadas
Así es como puede utilizar una variable global en una función anidada.
Ejemplo 5: uso de una variable global en una función anidada
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
La salida es:
Antes de la barra de llamada: 20 Barra de llamada ahora Después de la barra de llamada: 20 x en la principal: 25
En el programa anterior, declaramos una variable global dentro de la función anidada bar()
. Dentro de la foo()
función, x no tiene ningún efecto sobre la palabra clave global.
Antes y después de llamar bar()
, la variable x toma el valor de la variable local, es decir x = 20
. Fuera de la foo()
función, la variable x tomará el valor definido en la bar()
función, es decir x = 25
. Esto se debe a que hemos utilizado la global
palabra clave en x para crear una variable global dentro de la bar()
función (ámbito local).
Si hacemos algún cambio dentro de la bar()
función, los cambios aparecen fuera del ámbito local, es decir foo()
.