Variables globales y cómo cambiar desde una función en Python
-
Use
Variables globales
y cámbielas desde una función en Python -
Crear la variable
Global
en Python -
Cambiar el valor de la variable
Global
de una función en Python -
la palabra clave
Global
en Python - las Funciones Múltiples y una Variable Global
-
una función que tiene una variable con el mismo nombre que una variable
Global
- Conclusión
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.