El 18/06/10 16:38, Oswaldo Hernández escribió:
Milton Galo Patricio Inostroza Aguilera escribió:
El día 18 de junio de 2010 09:43, Oswaldo Hernández
 ......
La funcion imagen() no ve las variables que has definido fuera de ella.

Eso lamentablemente es un error bastante común en los programadores
(yo igual antes pensaba eso).  La función ve TODO  lo que está
definida en su scope al momento de nacer = Scope léxico o Scope
estático (también lo llaman).


explícame esto:

>>> def func1():
...     def func2():
...         a = 5
...     a = 0
...     func2()
...     print a
...
>>>
>>> func1()
0

Tienes que ver las funciones como contenedores aislados. Sólo las variables que declares como globales serán vistas así por las funciones. Todos los objetos en python tienen un 'id' y si los objetos son diferentes, su 'id' también. Prueba este código para que salgas de dudas:

def func1():
     def func2():
         a = 5
print "func2 (verás que el id de 'a' es diferente al que espera): ", id(a)
     a = 0
     print "func1 (antes de llamar a func2): ", id(a)
     func2()
print "func1 (despues de llamar a func2), e igual que antes de llamar a func2 porque es el mismo objeto y fun2 creo un objeto nuevo para su 'a': ", id(a)

func1()

Un saludo,

Pedro

_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Reply via email to