[Python-es] scope de variables

Milton Galo Patricio Inostroza Aguilera minoztro en gmail.com
Vie Jun 18 17:51:44 CEST 2010


El día 18 de junio de 2010 10:38, Oswaldo Hernández
<listas en soft-com.es> 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

gracias a dios da 0 ya que python tienen scope léxico y no scope
dinámico =)....se ves la definición scope léxico no te permite pisar
el valor de identificadores con el mismo nombre, lo que permite que
func2 no te modifique la variable a ;) que no pertenece a func2...si
ves en el frame le dices a func2 que ponga en su ambiente una a con
valor cinto por lo que a ya no es una variable libre.

si pones a=0 arriba de func2 dará exactamente lo mismo.

Saludos,

P.S.: en todo caso el comentario (del mail anterior) no fue algo
personal, solamente quería aclarar conceptos.

>
>
> --
> Oswaldo Hernández
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Milton Inostroza Aguilera


Más información sobre la lista de distribución Python-es