Palabra clave global de Python (con ejemplos)

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 globalpalabra 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 globalpalabra 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 globalpalabras clave.
  • Usamos globalpalabras clave para leer y escribir una variable global dentro de una función.
  • El uso de globalpalabras 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 globalpalabra 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.pypara 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.pyarchivo para almacenar variables globales

 a = 0 b = "empty"

Crea un update.pyarchivo para cambiar las variables globales

 import config config.a = 10 config.b = "alphabet"

Cree un main.pyarchivo para probar los cambios de valor

 import config import update print(config.a) print(config.b)

Cuando ejecutamos el main.pyarchivo, la salida será

 10 alfabeto

En lo anterior, hemos creado tres archivos: config.py, update.py, y main.py.

El módulo config.pyalmacena variables globales de ay b. En el update.pyarchivo, importamos el config.pymódulo y modificamos los valores de ay b. De manera similar, en el main.pyarchivo, importamos tanto config.pycomo update.pymodule. 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 globalpalabra 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().

Articulos interesantes...