On Sat, May 12, 2018 at 08:06:02PM -0400, Neil Girdhar wrote: > On Sat, May 12, 2018 at 2:28 PM Steven D'Aprano <st...@pearwood.info> wrote:
> > > * there are no difficult mental questions about evaluation order, e.g., > > > in a bracketed expression having multiple assignments. > > > > Aren't there just? > > > > x = 1 > > print( x + x given x = 50 ) > > > > > > Will that print 100, or 51? Brackets ought to make it clearer: > > > > (x + x given x = 50) # this ought to return 100 > > x + (x given x = 50) # this ought to return 51 > > > > but if I leave the brackets out, I have no idea what I'll get. > > > > It has to be 100, or else outer parentheses change how an expression is > evaluated. Whether that it right or wrong, you're missing the point. You said that we don't have to care about evaluation order. But we do: even if your analysis is correct, not everyone will realise it. I didn't. And I still don't, because I think your analyse is wrong. "Outer parentheses" is a red herring. I should have written: (x + x) given x = 50 # this ought to return 100 x + (x given x = 50) # this ought to return 51 and now there are no outer parentheses to worry about. The question is now whether "given" binds more tightly than + or not. We get to choose the precedence, and whatever we choose, it will surprise (or annoy) some people, and more importantly, some people simply won't know, and will have to ponder the difficult question of what the evaluation order is. This is already true today with code that has side-effects. I can simulate "given" using exec. It only works in the module scope: # another_expr given target = expr exec("target = expr") or another_expr but now we can see how precedence makes a real difference: x = 1 x + (exec("x = 50") or x) versus: x = 1 exec("x = 50) or (x + x) Regardless of which behaviour we choose, some people won't know it and will have to deal with "difficult mental questions about evaluation order". That's unavoidable, regardless of how we spell it, := or "given". -- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/