En este tutorial, aprenderá sobre las variables globales de Python, las variables locales, las variables no locales y dónde usarlas.
Vídeo: Variables locales y globales de Python
Variables globales
En Python, una variable declarada fuera de la función o en el ámbito global se conoce como variable global. Esto significa que se puede acceder a una variable global dentro o fuera de la función.
Veamos un ejemplo de cómo se crea una variable global en Python.
Ejemplo 1: crear una variable global
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Salida
x interior: global x exterior: global
En el código anterior, creamos x como una variable global y definimos a foo()
para imprimir la variable global x. Finalmente, llamamos al foo()
que imprimirá el valor de x.
¿Qué pasa si quieres cambiar el valor de x dentro de una función?
x = "global" def foo(): x = x * 2 print(x) foo()
Salida
UnboundLocalError: variable local 'x' referenciada antes de la asignación
La salida muestra un error porque Python trata x como una variable local y x tampoco está definida dentro foo()
.
Para que esto funcione, usamos la global
palabra clave. Visite Python Global Keyword para obtener más información.
Variables locales
Una variable declarada dentro del cuerpo de la función o en el ámbito local se conoce como variable local.
Ejemplo 2: acceder a la variable local fuera del alcance
def foo(): y = "local" foo() print(y)
Salida
NameError: el nombre 'y' no está definido
La salida muestra un error porque estamos intentando acceder a una variable local y en un ámbito global, mientras que la variable local solo funciona dentro foo()
del ámbito local.
Veamos un ejemplo de cómo se crea una variable local en Python.
Ejemplo 3: crear una variable local
Normalmente, declaramos una variable dentro de la función para crear una variable local.
def foo(): y = "local" print(y) foo()
Salida
local
Echemos un vistazo al problema anterior donde x era una variable global y queríamos modificar x adentro foo()
.
Variables globales y locales
Aquí, mostraremos cómo usar variables globales y variables locales en el mismo código.
Ejemplo 4: uso de variables globales y locales en el mismo código
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Salida
global global local
En el código anterior, declaramos x como una variable global e y como una variable local en foo()
. Luego, usamos el operador de multiplicación *
para modificar la variable global x e imprimimos tanto x como y.
Después de llamar a foo()
, el valor de x se convierte en global global
porque usamos x * 2
para imprimir dos veces global
. Después de eso, imprimimos el valor de la variable local y ie local
.
Ejemplo 5: variable global y variable local con el mismo nombre
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Salida
local x: 10 global x: 5
En el código anterior, usamos el mismo nombre x tanto para la variable global como para la variable local. Obtenemos un resultado diferente cuando imprimimos la misma variable porque la variable está declarada en ambos ámbitos, es decir, el ámbito local dentro foo()
y el ámbito global fuera foo()
.
When we print the variable inside foo()
it outputs local x: 10
. This is called the local scope of the variable.
Similarly, when we print the variable outside the foo()
, it outputs global x: 5. This is called the global scope of the variable.
Nonlocal Variables
Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.
Let's see an example of how a nonlocal variable is used in Python.
We use nonlocal
keywords to create nonlocal variables.
Example 6: Create a nonlocal variable
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Output
inner: nonlocal outer: nonlocal
En el código anterior, hay una inner()
función anidada . Usamos nonlocal
palabras clave para crear una variable no local. La inner()
función se define en el ámbito de otra función outer()
.
Nota : Si cambiamos el valor de una variable no local, los cambios aparecen en la variable local.