no pass-values calling?

Steven D'Aprano steve at
Wed Jan 16 12:33:47 CET 2008

On Wed, 16 Jan 2008 17:46:39 +1100, Ben Finney wrote:

> Christian Heimes <lists at> writes:
>> Dennis Lee Bieber wrote:
>> > 	Since all "variable" names in Python are references to objects,
>> > anything accessed using a name is accessed by reference.
>> Anybody using the terms variable, reference or call-by-value is most
>> likely explaining Python the wrong way.
> The term "reference" is fine, since that's exactly how it works. One
> gets at an object via some reference, be it a name or some access into a
> container object. When an object has no more references to itself, it
> becomes a candidate for garbage collection. And so on.

The term "reference" *by itself* is fine, so long as there is no 
possibility of confusion with the very common concept of "call by 
reference" (or "pass by reference"). 

But since the Original Poster himself raised the question of whether 
Python is call by reference or call by value, that should be a great big 
warning flag to avoid the term "reference" until he's reset his brain. 
Python is not C, and if you talk about Python using C terminology without 
making it absolutely crystal clear that the semantics of that terminology 
is different in Python, then you'll just reinforce the O.P.'s 

Python might have "references" in the generic sense, but in the specific 
sense that it is understood by most people with C/Pascal/Java/Perl 
experience, Python does not.


More information about the Python-list mailing list