Terca variable = no se como definir una funcion :-)

Joan Ordinas jordinas en gmail.com
Jue Jun 9 12:35:32 CEST 2005


On 6/8/05, Jesus Cea <jcea en argo.es> wrote:
> > Es cierto que algun libro usa la expresión "paso por objeto", pero de
> > hecho se trata del viejo paso por valor, como en el caso de C. Igual
> > que al "pasar un array" en C se pasa realmente su dirección por valor
> > (lo que aparenta ser un paso por referencia), en Python se pasa por
> > valor la dirección (aunque no la podamos ver ni manipular) de los
> > objetos mutables.
> 
> Lo que dices es "paso por referencia". Por defecto, si pasas el valor,
> no lo puedes cambiar.
> 
> > En resumen, creo que es mejor no usar  la expresión "paso por objeto"
> > que alguien se inventó un dia para ser didáctico...
> 
> A mí me parece perfectamente correcto y exactamente descriptivo.

Según el tutorial de Python, escrito por GvR:

The actual parameters (arguments) to a function call are introduced in
the local symbol table of the called function when it is called; thus,
arguments are passed using call by value (where the value is always an
object reference, not the value of the object).4.1 When a function
calls another function, a new local symbol table is created for that
call.

Esto si es claro y al mismo tiempo correcto. 

Y Guido añade:

Actually, call by object reference would be a better description,
since if a mutable object is passed, the caller will see any changes
the callee makes to it (items inserted into a list).

Por lo tanto, propone como más descriptivo "call by object reference",
con intenciones didácticas. Pero de hecho, como él dice, el paso es
por valor.

Para saber más:

http://www.python.org/doc/2.4/tut/node6.html

JJOR




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