[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