Totally Confused: Passing variables to functions
cdreward at riaa.com
Thu Jun 5 09:10:00 CEST 2003
I've hit a stumbling block while trying to pick up Python. I've googled
around, and I don't think I'm the first to have this question, but I haven't
been able to find an answer that explains things for me.
v = [1,2]
... This gives me the impression that Python passes variables by reference (by
a "pointer"), and the "arg" in blah is the same as "v".
But it's not, because if I say "arg = None" inside the function, "v" is
Also, if I do something similar:
arg = arg + 1
v = 1
I get the impression Python passes variables by copy.
It seems that if you pass a mutable variable, you can change it, but only by
using it's methods, ie arg.append(), and NOT by doing an "arg = (new value)".
And if you pass an immutable variable, you can't change it at all.
This doesn't seem very intuitive, which leads me to believe I'm missing "the
In the python tutorial, it says:
Actually, call by object reference would be a better description,
since if a mutable object is passed, the caller will see any changes
the callee makes to it (items inserted into a list).
But I don't understand what "object reference" means. I'm familiar with "pass
by copy" and "by reference(pointer)" in the Pascal or C languages...
What's going on? (*grin*)
More information about the Python-list