Finding the instance reference of an object

Joe Strout joe at strout.net
Sat Nov 8 23:59:19 EST 2008


On Nov 8, 2008, at 2:38 PM, Terry Reedy wrote:

>> So if you then insist that Python uses "call by object",
>> you're actually saying it uses call by value!
>
> Both Joe and you seem to be engaging in the following bit of  
> sophistry:
>
> "In order for code A to call code B, some information must be  
> communicated from A to B."  Something we all know ...
>
> "That information is a value of some sort." True...
>
> "Therefore all calling is calling by value."

Hey now, hang on.  That doesn't characterize my argument at all.  My  
argument is much simpler:

Python's call semantics are exactly the same as other modern OOP  
languages, where it is commonly called call-by-value (and it is, in  
fact, call-by-value, as you can see with the simple test of assigning  
to the formal parameter).  Therefore, we would reduce confusion if  
we'd get on board and call it that in Python, too.

Of course, I've softened my position somewhat, since being shown that  
"call by sharing" is simply a term for call-by-value in the case where  
the values are object references.  That clearly does apply to Python  
(as well as other OOP languages, where object references are  
involved), and as long as we can explain it as just a restricted form  
of call-by-value, I'm OK with that.

> In order to successfully program in Python, one must understand how  
> functions are called.  That 'how' is distinct from the 'how' of some  
> other languages.

Which languages?  Certainly none of those at <http://www.strout.net/info/coding/valref/ 
 >.  (Except that some of them have a by-reference option, which  
Python and Java do not.)

Best,
- Joe




More information about the Python-list mailing list