Maybe the order for d[k] = v should also be reconsidered?
On Thu, Apr 26, 2018, 08:23 Chris Angelico
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
On Fri, Apr 27, 2018 at 1:07 AM, Guido van Rossum
wrote: this would be mandatory.
On Thu, Apr 26, 2018 at 6:57 AM, Nick Coghlan
wrote: On 25 April 2018 at 18:23, Chris Angelico
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