[pyar] [Programación] Variable reassignment

Claudio Freire klaussfreire en gmail.com
Lun Mar 5 01:14:26 ART 2012


2012/3/4 Roberto Alsina <ralsina en netmanagers.com.ar>:
> Justamente, en Python es al revés.
>
> dolar = 2.96
>
> ahí creaste un objeto float(2.96). Le creaste tambien un alias que se llama
> "dolar". El float tiene desde ahí una (1) referencia.
>
> dolar = 123
>
> Ahi creás un objeto int(123). Creás un alias dolar que apunta al int. El
> float no tiene más referencias. El float se elimina.
>
> Es realmente distinto a otros lenguajes. De hecho va contra la analogía que
> te enseñan siempre "la variable es una cajita con un valor adentro".
>
> Sí, a los efectos prácticos estás haciendo reasignación, pero en realidad
> no, estás creando aliases para objetos dinámicos.

Es algo más complejo que eso...

>>> def valordolar():
...    print dolar
...
>>> dolar = 1.27
>>> print valordolar()
1.27
None
>>> dolar = 127
>>> print valordolar()
127
None
>>> def test():
...     dolar = 1.27
...     def rv():
...        return dolar
...     dolar = 130
...     return rv
...
>>> f = test()
>>> f
<function rv at 0x7f34daffa500>
>>> f()
130
>>>

Python tiene cajitas, sólo que las cajitas referencian objetos, no los
contienen.

Algunos objetos son inmutables (no pueden cambiar), y por lo tanto se
comportan como valores (ej, strings, ints, floats), pero otros objetos
sí pueden cambiar, y ahí se evidencia la diferencia (listas,
diccionarios, instancias).



More information about the pyar mailing list