[Edu-sig] Pass by Reference
David MacQuigg
macquigg at ece.arizona.edu
Wed May 21 16:47:09 CEST 2008
At 06:35 PM 5/20/2008 -0700, Warren Sande wrote:
>Putting aside the "pass-by-X" question, a beginner asks:
>
>"If I do A = (something) then B = A then I change A, does B also change?"
>
>And the answer, again, is "It depends." For mutable types, yes, for immutable types, no. And that's a sticky thing to get into for a beginner who is just learning what variables (names) are about.
At this point, I would immediately stop using vague words like "change", and try to find words with a more precise meaning, like "re-bind" and "modify". "Re-assign" would be another possibility, but I see that "re-bind" is commonly used in Python texts. Also, it is a less common word than re-assign, so less likely to have other meanings. "Mutate" might be better than "modify" for the same reason.
Long before any discussion of parameter passing, students should have a firm grasp of how variables work in Python, including the concepts of mutability and rebinding. This is the model and terminology I suggest:
variable:(name, pointer) --> object:(type, value, address)
Other than the word "value", I don't see any confusion with any of these terms. I haven't heard any suggestions for a better simple model.
With this model in mind, the simple answer to the student's question is - "It depends on whether you are modifying the object of variable A, or re-binding A to some other object.
-- Dave
More information about the Edu-sig
mailing list