Variables globales y cómo cambiar desde una función en Python

Shikha Chaudhary 30 enero 2023
  1. Use Variables globales y cámbielas desde una función en Python
  2. Crear la variable Global en Python
  3. Cambiar el valor de la variable Global de una función en Python
  4. la palabra clave Global en Python
  5. las Funciones Múltiples y una Variable Global
  6. una función que tiene una variable con el mismo nombre que una variable Global
  7. Conclusión
Variables globales y cómo cambiar desde una función en Python

Las variables ‘globales’ en Python son aquellas variables que tienen un ‘ámbito global’. En otras palabras, su alcance no se limita a ninguna función o bloque específico del código fuente.

Use Variables globales y cámbielas desde una función en Python

Primero, declara la variable x.

def avengers():
    x = 10
    print("Gibberish")


avengers()
print(x)

Producción :

Gibberish

NameError: name 'x' is not defined

La variable x está dentro de la función avengers. Esto significa que el alcance de esta variable se limita solo a esta función.

Es por eso que obtenemos un error si intentamos acceder a esta variable fuera de esta función.

Crear la variable Global en Python

Mueve la declaración de la variable x fuera de la función.

x = 10


def avengers():
    print("Gibberish")


avengers()
print(x)

Producción :

Gibberish
10

La variable x se define fuera de la función y, por lo tanto, podemos usarla en cualquier parte de nuestro programa.

Además, es una variable global. Declarar una variable en el ámbito global crea una variable global en Python.

También podemos acceder a la variable global x desde la función avengers.

x = 10


def avengers():
    print("From avengers:", x)


avengers()
print("Outside avengers:", x)

Producción :

From avengers: 10
Outside avengers: 10

Cambiar el valor de la variable Global de una función en Python

Este código tiene una variable global x con 10. Luego, dentro de la función change, le sumamos 12 a esta variable x.

Una declaración de impresión dentro de la función debe imprimir el valor actualizado de x.

x = 10


def change():
    x = x + 12
    print(x)


change()

Producción :

UnboundLocalError: local variable 'x' referenced before assignment

En Python, una función solo puede acceder e imprimir una variable global. Necesitamos decirle a la función que se refiere para cualquier asignación o cambio en la variable global.

Si no especificamos esto, la función piensa que las asignaciones y los cambios se realizan en la propia variable local. Por lo tanto, obtenemos este error.

Utilice la palabra clave global para cambiar el valor de una variable global desde dentro de una función de Python.

la palabra clave Global en Python

Python le da una palabra clave llamada global para modificar una variable fuera de su alcance. Úselo cuando tenga que cambiar el valor de una variable o realizar alguna asignación.

Intentemos arreglar el código anterior usando la palabra clave global.

x = 10


def change():
    global x
    x = x + 12
    print(x)


change()

Producción :

22

Vea cómo especificamos x como global usando la palabra clave global en la tercera línea.

Ahora, veamos el valor de la variable x al imprimirla fuera de la función.

x = 10


def change():
    global x
    x = x + 12
    print(x)


change()
print(x)

Producción :

22
22

Dado que la función ha actualizado x de 10 a 22, obtendremos el valor actualizado como salida incluso al acceder a la variable fuera del ámbito local.

var = "A"


def chocolate():
    print("From chocolate:", var)


def cake():
    global var
    var = var * 2
    print("From cake:", var)


chocolate()
cake()
print("From main:", var)

Producción :

From chocolate: A
From cake: AA
From main: AA

La mejor inferencia que puede sacar de este resultado es que el orden importa. La función chocolate utiliza el valor inicial de var y no el valor modificado.

Esto se debe a que la función cake que modifica el valor de var se llama después de la función chocolate. Si llamamos primero a la función cake, la función chocolate también usará el valor actualizado de var.

var = "A"


def chocolate():
    print("From chocolate:", var)


def cake():
    global var
    var = var * 2
    print("From cake:", var)


cake()
chocolate()
print("From main:", var)

Producción :

From cake: AA
From chocolate: AA
From main: AA

Esto nos lleva a algunas reglas que debe seguir al usar la palabra clave global de Python.

  • Por defecto, una variable dentro de una función es local, y una variable fuera de una función es global. No use esta palabra clave para variables fuera de una función.
  • El uso de la palabra clave global fuera de una función en Python no afecta el código de ninguna manera.
  • El uso principal de la palabra clave global es para hacer asignaciones o cambios en Python. Por lo tanto, no lo necesitamos simplemente para acceder o imprimir la variable.

las Funciones Múltiples y una Variable Global

Aquí tenemos una variable global s con el valor 1. Vea cómo la función universidad utiliza la palabra clave global para modificar el valor de s.

s = 1


def college():
    global s
    s = s + 5
    print("College students: ", s)
    return s


def school():
    s = college()
    s = s + 10
    print("School students: ", s)
    return s


college()
school()
print("Global students: ", s)

Producción :

College students:  6
College students:  11
School students:  21
Global students: 11

Primero, llamamos a la función college. Esta función modifica la variable global s y la cambia a 6.

Obtenemos la salida como 6 de la primera declaración de impresión. Entonces, llamamos a la función school.

De nuevo llamamos a la función school dentro de la función college. Esta vez, la función college también modifica el valor de la variable s.

Toma el valor anterior de 6 y luego lo actualiza a 11. Entonces, el valor final de la variable global ahora se convierte en 11.

Luego, la función school lo modifica, pero esto no se actualizará en la variable global. Utiliza el valor actualizado de s e imprime el valor después de sumar 10.

No utiliza la palabra clave global. Por lo tanto, la salida 21. Ahora puede ver por qué la salida de la última declaración es 11.

Esto no es más que el valor actualizado de la variable global s.

una función que tiene una variable con el mismo nombre que una variable Global

Existe la posibilidad de que tengamos una función que tenga una variable declarada en su interior con el mismo nombre que una variable global.

Una pregunta inevitable que surge aquí es: ¿qué variable usará la función? ¿Locales o globales? Dejanos ver.

# the global variable
a = 5

# function


def music():

    # variable inside function with same name as global variable
    a = 10
    print("Music:", a)


music()
print(a)

Producción :

Music: 10
5

Hay una variable global a en este código, cuyo valor es 5. La función música también tiene una variable llamada a.

El valor de esta variable es 10. Cuando accedemos al valor de la variable a dentro de la función, obtenemos el valor de la variable local a esta función, que es 10.

Cuando accedemos al valor de a desde fuera de esta función, obtenemos la salida como 5.

Esto implica que si la variable local está presente con el mismo nombre que la variable global en un ámbito específico, tiene más prioridad que la variable global.

Conclusión

Este tutorial enseñó los conceptos básicos de las variables globales en Python. Vimos en qué se diferencian de las variables locales y cómo las creamos en Python.

Artículo relacionado - Python Scope