English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico de Python

Control de flujo de Python

Funciones en Python

Tipos de datos en Python

Operaciones de archivos de Python

Objetos y clases de Python

Fecha y hora de Python

Conocimiento avanzado de Python

Manual de referencia de Python

Variables globales, locales y no locales en Python

En este artículo, aprenderá sobre variables globales, variables locales, variables no locales de Python y dónde usarlas.

Variables globales

En Python, las variables declaradas fuera de una función o en el ámbito global se llaman variables globales. Esto significa que se puede acceder a las variables globales tanto dentro como fuera de una función.

Vamos a ver un ejemplo de cómo crear una variable global en Python.

Ejemplo1:Crear una variable global

x = "global"
def foo():
 print("interno x:", x)
foo()
print("externo x:", x)

Al ejecutar el código, se producirá la salida:

interno x: global
externo x: global

En el código anterior, declaramosxCreamos como variable global y definimos foo() para imprimir la variable globalx。Finalmente, llamamos a foo() y se imprimiráxel valor.

Si queremos cambiarx¿Qué hacer con el valor?

x = "global"
def foo():
 x = x * 2
 print(x)
foo()

Al ejecutar el código, se producirá la salida:

UnboundLocalError: la variable local 'x' se refiere antes de la asignación

El mensaje de error muestra que Python considera a x como una variable local y x no está definido en foo().

Para lograr esta función, hemos utilizado la palabra clave global. Para obtener más información, visitePalabra clave global de Python

Variables locales

Las variables declaradas dentro del cuerpo de una función o en el ámbito local se llaman variables locales.

Ejemplo2:Acceder a una variable local fuera de su ámbito

def foo():
 y = "local"
foo()
print(y)

Al ejecutar el código, se producirá la salida:

NameError: nombre 'y' no está definido

El mensaje de error muestra que intentamos acceder a una variable local y en el ámbito global, mientras que las variables locales solo funcionan en foo() o en el ámbito local.

Veamos un ejemplo de cómo crear una variable local en Python.

Ejemplo3:Crear variable local

Por lo general, declaramos una variable dentro de una función para crear una variable local.

def foo():
 y = "local"
 print(y)
foo()

cuando ejecutamos el código, se mostrará:

local

Vamos a verel problema anterior,entrexes una variable global, queremos modificarla dentro de foo()x

Variables globales y locales

Aquí, mostraremos cómo se utilizan variables globales y locales en el mismo código.

Ejemplo4:En el mismo código se utilizan variables globales y locales

x = "global"
def foo():
 global x
 y = "local"
 x = x * 2
 print(x)
 print(y)
 
foo()

Al ejecutar el código, se producirá la salida:

global global 
local

En el código anterior, declaramos x como una variable global y y como una variable local en foo(). Luego, usamos el operador de multiplicación*Modificar la variable global x y al mismo tiempo, y salida x e y.

Después de llamar a foo(), el valor de x se convierte en global global, porque usamos x * 2Imprimir dos veces global. Luego, imprimimos el valor de la variable local y, es decir, la variable local.

Ejemplo5: Variables globales y locales con el mismo nombre

x = 5
def foo():
 x = 10
 print("local x:", x)
foo()
print("global x:", x)

Al ejecutar el código, se producirá la salida:

local x: 10
global x: 5

En el código anterior, usamos el mismo nombre x para la variable global y local. Al imprimir la misma variable, obtenemos resultados diferentes porque la variable se declara en dos alcances, es decir, el ámbito local en foo() y el ámbito global fuera de foo().

Cuando imprimimos una variable en foo(), la salida es local x: 10. Esto se llama el ámbito de la variable local.

Del mismo modo, cuando imprimimos una variable fuera de foo(), se producirá la salida global x: 5. Esto se llama el ámbito global de la variable.

Variable no local

Las variables no locales se utilizan para funciones anidadas sin ámbito local definido. Esto significa que la variable no puede estar en el ámbito local ni en el ámbito global.

Vamos a ver un ejemplo de cómo crear una variable global en Python.

Usamos la palabra clave nonlocal para crear una variable no local.

Ejemplo6: Crear una variable no local

def outer():
 x = "local"
 
 def inner():
 nonlocal x
 x = "nonlocal"
 print("inner:", x)
 
 inner()
 print("outer:", x)
outer()

Al ejecutar el código, se producirá la salida:

inner: nonlocal
outer: nonlocal

En el código anterior, hay una función anidada inner(). Usamos la palabra clave nonlocal para crear una variable no local. La función inner() se define dentro del ámbito de la función external().

AtenciónSi cambiamos el valor de una variable no local, estos cambios aparecerán en la variable local.