English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, aprenderá sobre variables globales, variables locales, variables no locales de Python y dónde usarlas.
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.
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。
Las variables declaradas dentro del cuerpo de una función o en el ámbito local se llaman variables locales.
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.
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。
Aquí, mostraremos cómo se utilizan 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()
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.
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.
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.
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.