Variables globales, locales y no locales de Python (con ejemplos)

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 globalpalabra 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 globalporque usamos x * 2para 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 nonlocalpalabras 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.

Articulos interesantes...