On Fri, Apr 27, 2018 at 1:07 AM, Guido van Rossum <gu...@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 <ncogh...@gmail.com> wrote:
>>
>> On 25 April 2018 at 18:23, Chris Angelico <ros...@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
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to