[Python-3000] Set literal
Larry Hastings
larry at hastings.org
Sun Feb 3 12:21:22 CET 2008
Nicko van Someren wrote:
> Do we really want set literals at all, given that set(...) exists?
>
> If we are going to have one then, it seems to make sense to have
> both. If we are going to have both, I would rather that they generate
> the same type of set.
Maybe the postings crossed in the ether, but Guido said as much on the
30th; either they'd both change or neither would change.
Personally I like the idea of changing them to frozensets; a) it's easy
to cast to set() if you want mutability, b) it makes the
if x in { 1, 2, 5 }: # three, sir!
idiom faster. Yeah, it's a bit ticklish wrt dict
literals/comprehensions returning mutable types, but at least tuple()
would have company in the immutable constants department. So +1 from
me... for what little that is worth.
When compiling a mutable type with an immutable equivalent, does Python
generate create-empty-object/insert-each-item bytecodes, or does it
create an immutable constant then cast it to the appropriate type? My
intuition is that the latter would be faster; given the professionalism
of the Python development community, I assume both approaches have been
tried, and the faster one was switched to long ago? A coworker of mine
got a tiny--but measurable--speedup by applying that style of
optimization to PHP arrays.
/larry/
p.s. or maybe the create-empty-object takes an optional parameter of
"and reserve this much space inside"? That would probably even the
playing field.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-3000/attachments/20080203/e3d481cf/attachment.htm
More information about the Python-3000
mailing list