[Python-Dev] The new and improved PEP 572, same great taste with 75% less complexity!

Chris Angelico rosuav at gmail.com
Thu Apr 26 11:21:13 EDT 2018


On Fri, Apr 27, 2018 at 1:07 AM, Guido van Rossum <guido at python.org> wrote:
> Just as I feared. While currently fixing this is just fixing a bug (nobody's
> code is going to break except perhaps some tests), with PEP 572 fixing this
> would be mandatory.
>
> On Thu, Apr 26, 2018 at 6:57 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:
>>
>> On 25 April 2018 at 18:23, Chris Angelico <rosuav at gmail.com> wrote:
>> >>>> x={print(2): print(1) for _ in [1]}
>> > 1
>> > 2
>> >
>> > Hmmmmmmmmm. One of these is not like the others...
>>
>> Huh, it looks like we missed checking dict comprehensions when we
>> fixed dict displays to evaluate keys before the corresponding values.
>> That would qualify as a reasonable request for improvement in Python
>> 3.8 :)

It's deliberate code in compile.c:

        case COMP_DICTCOMP:
            /* With 'd[k] = v', v is evaluated before k, so we do
               the same. */
            VISIT(c, expr, val);
            VISIT(c, expr, elt);
            ADDOP_I(c, MAP_ADD, gen_index + 1);
            break;

So if it's a bug, it's still a deliberate bug. :)

ChrisA


More information about the Python-Dev mailing list