(original) (raw)

Maybe the order for d\[k\] = v should also be reconsidered?

On Thu, Apr 26, 2018, 08:23 Chris Angelico <rosuav@gmail.com> wrote:
On Fri, Apr 27, 2018 at 1:07 AM, Guido van Rossum <guido@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@gmail.com> wrote:
\>>
\>> On 25 April 2018 at 18:23, Chris Angelico <rosuav@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/guido%40python.org