> Raymond Hettinger wrote:
> > Use copy.copy() for generic copying -- it works across a wide range
of
> > objects.  Alternatively, use the constructor as generic way to make
> > duplicates:
> >
> >    dup = set(s)
> >    dup = list(l)
> >    dup = dict(d)
> >    dup = tuple(t)     # note, the duplicate is original object here
:-)

[Nicolas Fleury]
> I know all this, but why then is there a copy method for sets and
> dictionaries?  What justification is valid for sets and dictionaries
> that doesn't apply to lists?

Several thoughts:

* maybe it's a Dutch thing;

* dict.copy() pre-dated dict(d) and (IIRC) copy.copy();

* sets and dicts don't have the [:] syntax available to them;

* the __copy__() method is new way to make things copy.copyable
  without fattening the apparent API or rewriting the copy module;

* because generic copying isn't important enough to add more 
  ways to do the same thing;

* and because Guido believes beginners tend to copy too much
  (that is one reason why copy.copy is not a builtin) and that
  the language should encourage correct behavior.


Raymond
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to