Variables locales y globales
Em Python cada archivo es un modulo que puede ser importado Cada modulo tendrá sus variables globales y locles
- Las variables globales seran accesibles desde cualquier función.
- Las variables locales sólo seran accesibles desde el módulo o función donde estén definidos.
La función globals()
devuelve el namespace global, que es la relación de elementos globales (variables y funciones) definidas para cada módulo (cada archivo) y accesible para las funciones definidas en él
La función locals()
devuelve el namespace local, que es la relación de elementos globales (variables y funciones) definidas para una función en concreto
Ejemplo1
def f():
print(msg)
msg = "I love Paris in the summer!"
f()
La variable global msg
se define fuera (global). Al ejecutar f()
busca un msg
local y como no lo encuentra utiliza el msg
global (I love Paris in the summer!
)
Ejemplo2
def f():
msg = "I love London!"
print(msg)
msg = "I love Paris!"
f()
La variable global msg
se define fuera (global). Al ejecutar f()
busca un msg
local y como lo encuentra utiliza el valor del msg
local (I love London!
)
Ejemplo3
def f():
global msg
print(msg)
msg = "Only in spring, but London is great as well!"
print(msg)
msg = "I am looking for a course in Paris!"
Tambien podemos especificar (con global
) dentro de la función f
que queremos utilizar la variable global msg
. Al ejecutar f()
utilizará la variable global msg
, tanto para imprimir su valor como para asignarle nuevos valores
Ejemplo4
def f():
print(msg)
Las variables globales se limitan a cada modulo. Aunque en otro modulo hayamos definido la variable global msg
, ésta variable no existe para el resto. Si intentamos utilizar esta variable sin haberla definido, python lanzará un error
Ejemplo5
example5.py
msg = "Hello World!"
from example51 import f
example51.py
def f():
print(msg)
Las variables globales se limitan a cada modulo. Esto se aplica tambien para cuando importamos una función. Si esta función importada no tiene definida la variable en su archivo, dará error
Ejemplo6
example6.py
from example61 import f
f()
example61.py
from example62 import msg
def f():
print(msg)
example62.py
msg = "Hello World!"
Sin embargo, si que podemos importar sin problema variables y funciones definidas en otros archivos para ejecutarlos en otro lugar
Aqui se pueden todos estos ejemplos testeados…