Variables locales y globales

2018-03-22

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…


Recursos