[Python-Dev] Proposal to eliminate PySet_Fini
jcarlson at uci.edu
Fri Jun 30 02:37:20 CEST 2006
"Alexander Belopolsky" <alexander.belopolsky at gmail.com> wrote:
> On 6/29/06, "Martin v. Löwis" <martin at v.loewis.de> wrote:
> >... dict is more basic, set is just a special case of
> > dict for performance reasons. Also, dict is used to define and implement
> > the language itself, set is "just" a predefined type.
> I guess it can be seen either way, just as a chicken and an egg. Does
> python-3000 still plan to integrate sets and dicts so that a set is a
> view of a dict? That would support the view that a set is more basic
> (dict code will depend on set code but not the other way around).
I don't think that makes sense. I see a basic structure as one that can
be used to implement other structures. A dict can emulate a set, but a
set cannot emulate a dict. Thus, a set is a specialization of a dict
with fewer features than the regular dict.
> If set has better performance than dict (which I have not noticed so
> far), it will be appropriate to use it in the language implementation
> where it can replace a dict. The prime example is the "interned"
The performance, I believe, is based on a Python 2.5 optimization
that reduces memory consuption per entry from 12 to 8 bytes per entry.
> > ... It is by design that you can use the dict API everywhere, since
> > dict is part of the language itself. set wasn't designed with such a
> > goal (the same is true for many other types, I would guess).
> That's probably the hart of my proposal. I would like to see sets
> usable as a part of the language, or an application that embeds the
> language everywhere where dicts can be used today.
I disagree. You can get everything you need with a dict, and making
sets a part of the language (besides being a builtin type), would
necessarily add more overhead and maintenance to the language for little
gain. If you need set-like functionality, and you need it to not be
finalized, use a dict; it is available today, can do all the same things, and
you don't need to wait at least 1.5 years until Python 2.6 is out.
More information about the Python-Dev