paso por valor y paso por referencia
Antonio Castro
acastro en ciberdroide.com
Lun Oct 25 09:55:05 CEST 2004
On Sat, 23 Oct 2004 ch3m4 en ch3m4.org wrote:
> Mensaje citado por Antonio Castro <acastro en ciberdroide.com>:
>
> > Tal como yo lo veo, desaparece es el clásico concepto de variable como
> > contenedor de valores y el concepto de constante. Ambos se implementan
> > con objetos.
> >
> > Engaña un poco porque el identificador de la mal llamada variable no
> > cambia pero despues de la asignación ya no es la misma. No solo cambia
> > su contenido, cambia el objeto en si.
>
> Lo que en otros lenguajes se conocen como variables y constantes, en python son
> meras "etiquetas" con las que referencias a objetos que pululan por la memoria.
> Estos objetos se suelen crear como resultado de una operación, pero no siempre.
> Durante el arranque de python, se crean una serie de objetos de uso frecuente
> como los números enteros entre -1 y 99. Repite las pruebas con ellos y verás
> que tienen comportamiento diferente.
>
> >>> a=5
> >>> b=5
> >>> id(a),id(b),id(2+3)
> (134536648, 134536648, 134536648)
>
> >>> a=100
> >>> b=100
> >>> id(a),id(b),id(88+2)
> (134606744, 134606768, 134537604)
Muy interesante. No ténía ni idea. Seguramente hay muchos detalles
de implementación curiosos.
> Por si te interesa, hace unos días postulé unas reglas sobre la Ontología de
> Objetos en python
> (http://ch3m4.org/blog/index.php/py/2004/09/21/ontologia_de_objetos_en_python)
Una de las cosa que tu afirmas me parece un tanto arriesgada.
2. No son los objetos los que "varían", sino las referencias que
apuntan a ellos.
Creo que los objetos si son capaces de variar y conservar su referencia.
Un ejemplo:
>>> a=[]
>>> id(a)
1075963212
>>> a.append('Modifico el objeto')
>>> id(a)
1075963212
--
Un saludo
Antonio Castro
/\ /\
\\W//
_|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . acastro en ciberdroide.com |
+()()()---------()()()--------------------+
Más información sobre la lista de distribución Python-es