assigning values in python and perl

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Thu Jan 17 05:20:14 CET 2008


On Thu, 17 Jan 2008 11:40:59 +0800, J. Peng wrote:

> May I ask, python's pass-by-reference is passing the object's reference
> to functions, but perl, or C's pass-by-reference is passing the variable
> itself's reference to functions. So althought they're all called
> pass-by-reference,but will get different results.Is it?

Python is not call by reference.

Any book or person that says it is, is wrong to do so.

Python's function call semantics are not the same as C, or Perl, or 
Pascal. They are, however, similar to those of Lisp, Scheme, Emerald and 
especially CLU. It is neither pass by reference, nor pass by value.

Java also uses similar call-by-object (sometimes call-by-sharing) 
semantics, and just like Python, Java developers tie themselves in knots 
by using misleading names for it:

http://codertricks.strainu.ro/java/2007/05/02/why-java-sends-parameters-
by-value/

and 

http://codertricks.strainu.ro/java/2007/06/15/call-by-sharing/


Did you read the links I sent you yesterday, especially the second one?

http://effbot.org/zone/python-objects.htm
http://effbot.org/zone/call-by-object.htm



-- 
Steven



More information about the Python-list mailing list