On Tue, Jul 24, 2018 at 8:22 AM, Thomas Jollans <t...@tjol.eu> wrote: > On 18/07/18 19:43, Steve Dower wrote: >> When a ``None``-aware operator is present, the left-to-right evaluation >> may be >> short-circuited. For example, ``await a?.b(c).d?[e]`` is evaluated:: >> >> _v = a >> if _v is not None: >> _v = _v.b >> _v = _v(c) >> _v = _v.d >> if _v is not None: >> _v = _v[e] >> await _v > > ## NB I only skimmed most of this thread after reading the PEP, so I ## > ## apologize if this has been discussed before and I missed it. ## > > I quite like the general idea, but I'm nervous about a rather > fundamental aspect: This adds a special case in which you can't add > parentheses to an expression involving a chain of operators to make > precedence and evaluation order clear. > > To use your example, > a ?? 2 ** b ?? 3 === (a ?? 2) ** (b ?? 3) # fine > > In the present day, > a or 2 + 3 * c() === a or (2 + (3 * (c()))) > > a.b(c).d[e] === (((a.b)(c)).d)[e] # silly, but true. > > Short-circuiting doesn't break this. With and and or, the expression > that's short-circuited away is a self-contained expression in imagined > (or actual) parentheses.
What about: 5 < x < 10 Can you add parentheses to that to "make precedence and evaluation order clear"? ChrisA _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/