On Oct 30, 11:03 am, Joe Strout <[EMAIL PROTECTED]> wrote: > ... >> Are you saying that C++ is capable of using the Call By Reference idiom, >> but C is not, because C does not have a reference designation for formal >> function parameters? > > It's been a LONG time since I did anything in C, but yes, I believe > that reference parameters were an addition that came with C++.
Okay, I completely understand you, and I think we will just have to agree to disagree about the best term to use for Python's parameter passing mechanism, and this will likely be my concluding post on this topic (although I have enjoyed it very much and have solidified my own understanding). I even found a few web sites that very strongly support your viewpoint (as it relates to Java): http://www.ibm.com/developerworks/library/j-praxis/pr1.html http://javadude.com/articles/passbyvalue.htm http://www.yoda.arachsys.com/java/passing.html The difference is that I would say that C supports the Pass By Reference idiom using this syntax: myfunc(int *val){} /*CALL:*/ myfunc(&i); which actually passes an address expression (not a variable) by value, but "looks and feels" like a reference to the "i" variable, which contains the real value that we care about - and allows modification of that value. C++ adds a syntactic change for this very commonly used C idiom, but does not add any new capability - the results are absolutely indistinguishable. Python, likewise, in relation to the values we care about (the values contained only in objects, never in variables) behaves like Call by Object Reference. If I tell someone that Python uses only Call By Value (and that is all I tell them), they may come away with the impression that variables contain the values they care about, and/or that the contents of objects are copied, neither of which is the case, even for so-called "simple", immutable objects (indeed, at the start of this thread, you said you believed that, like Java, simple values were contained within Python variables). But Python, unlike Java or most other commonly used languages, can ONLY EVER pass an object reference, and never an actual value I care about, and I think that idiom deserves a different name which distinguishes it from the commonly accepted notion of Pass By Value. Thanks for a thoughtful discussion, dale -- http://mail.python.org/mailman/listinfo/python-list