New submission from Dan Snider <mr.assume.a...@gmail.com>:

>>> import dis
>>> @dis.dis
... def funcdef(k): return k in {None}                          ...             
                                                  2           0 LOAD_FAST       
         0 (k)
              2 LOAD_CONST               1 (frozenset({None}))                4 
COMPARE_OP               6 (in)                               6 RETURN_VALUE
>>> regass = lambda k: k in {None}
>>> dis.dis(regass)
  1           0 LOAD_FAST                0 (k)
              2 LOAD_CONST               1 (frozenset({None}))
              4 COMPARE_OP               6 (in)
              6 RETURN_VALUE                                    >>> 
dis.dis(walrus:=lambda k: k in {None})
  1           0 LOAD_FAST                0 (k)
              2 LOAD_CONST               0 (None)
              4 BUILD_SET                1
              6 COMPARE_OP               6 (in)
              8 RETURN_VALUE

As the third example demonstrates, the code for the anonymous function assigned 
to walrus by an assignment expression isn't receiving the relatively recent 
frozenset optimization.

----------
messages: 392015
nosy: bup
priority: normal
severity: normal
status: open
title: lambdas stored with assignment expressions are unoptimized
type: performance
versions: Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue43947>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to