pythong referencing/aliasing
Jeff Epler
jepler at unpythonic.net
Fri Apr 25 11:32:21 EDT 2003
A simple assignment such as
v = expr
only re-binds v to the result of expr. There is thus no way to directly
translate C code such as
void set_to_one(int &x) {
x = 1;
}
into Python.
A complex assignment, such as
x.y = expr
x[y] = expr
does not re-bind the name "x". Instead, it mutates (changes) the thing
named by x. If something else names the same object, it will continue
to refer to the same object (with a new value).
Of course, only some objects are mutable in Python. Others (strings,
tuples, and numbers) are immutable.
This is a fairly common FAQ. You may find that reading the FAQ will
give you a clearer explanation. I can only add one other piece of
information: I rarely am hurt by the fact that Python doesn't have
references of the type you're talking about.
Jeff
More information about the Python-list
mailing list