Magnus Lycka wrote: > sorted_l = l.sort() > > and while sorted_l would contain what one might expect, it > would in fact just be another name referencing exactly the > same sorted list as l, and it would probably be surprising > that l was also sorted, and that subsequent changes would > show up in both sorted_l and l, and that sorted_l might not > be sorted and longer even though you only modified l. It's > this particular gotcha that the language creator wanted to > avoid. > Since python's '=' is just name binding and that most objects(other than those like int/float/string?) are mutable, I don't quite understand why this is a gotcha that is so worrying.
a = [1,2,3] a.sorted() b = a even an entry level python programmer can't expect 'b' to be unchanged(after getting the first bite may be) if there is any operation on a later. This not only applies to list but almost all mutable object. As you said, if one wants a copy of an object, use copy/deepcopy or even pickle to get a snapshot of it. -- http://mail.python.org/mailman/listinfo/python-list