[Python-ideas] anyone need a frozenset or bytearray literal?

Steven D'Aprano steve at pearwood.info
Thu Jul 12 05:51:46 EDT 2018


On Wed, Jul 11, 2018 at 04:25:56PM -0700, Gregory P. Smith wrote:
> Completely obvious what it does, but it irritates my aesthetic
> sensibilities every time I see:
>   frozenset({spam, eggs})

+1 to the idea of a new set method, freeze, returning a frozenset, and 
allowing the interpreter to optimize calls like:

   {a, b, c}.freeze() 

to skip making the temporary set.

I seem to have a vague recollection that there was already a CPython 
optimization in place that substitutes a frozenset for certain set 
displays... ah yes, here it is:

py> dis.dis("x in {2, 3}")
  1           0 LOAD_NAME                0 (x)
              3 LOAD_CONST               2 (frozenset({2, 3}))
              6 COMPARE_OP               6 (in)
              9 RETURN_VALUE

Nice!



-- 
Steve


More information about the Python-ideas mailing list