
On Wed, Aug 1, 2018 at 5:29 PM, Jonathan Fine <jfine2358@gmail.com> wrote:
Hi All
I have two further questions. I'm keen to clarify what is the behaviour specified by PEP 505. I'm not, at this time, interested in why and how PEP 505 specifies behaviour. I just wish, through explicit examples, to clarify the behaviour that is specified.
Here 'a' is an identifier. Consider the following 12 expressions (I use the word loosely).
1) a . b . c 2) (a . b) . c 3) a . (b . c)
4) a ?. b . c 5) (a ?. b) . c 6) a ?. (b . c)
7) a . b ?. c 8) (a . b) ?. c 9) a . (b ?. c)
10) a ?. b ?. c 11) (a .? b) ?. c 12) a ?. (b ?. c)
Question A: Which of the expressions are NOT valid (Python + PEP 505) syntax? Question B: Which of the valid (Python + PEP 505) expressions are equivalent, for all possible values of 'a'.
The answer depends, of course, on the exact text of PEP 505. I've not read PEP 505 that closely. My expectations, based on my Python experience, are that PEP 505 would be written so that:
Answer A: Expressions 3, 6, 9 and 12 are invalid. The others are valid.
Correct. After a dot (whether ?. or plain . ), you need a NAME, not any form of expression (test, expr, etc).
Answer B: 1 and 2 are equivalent. Similarly 4 and 5. Similarly 7 and 8. Similarly 10 and 11. There are no other equivalences (for all values of 'a').
Incorrect. The short-circuiting behaviour ends at any sort of grouping. It's like how "a < b < c" is not equivalent to "(a < b) < c", nor to "a < (b < c)". ChrisA