I'd like to see the ability to do:

if x:
  1
and if y:
  2
or if z:
  3

The truth table for these would be:

x | y | z | result
0 | _ | 0 | (none)
0 | _ | 1 | 3
1 | 0 | _ | 1,3
1 | 1 | _ | 1,2,3

and each statement is evaluated once, when encountered. (as such, y and z may not be evaluated at all, if their evaluation is not necessary to determine the outcome.)

This enables the usage of fallthrough - "or if" is a fallthrough case, and the "or" in it is because its body gets evaluated either if the parent if's body got evaluated, *or* if the orif expression is truthy.

"and if" is only suggested here for the sake of analogy/consistency/something. we have "and" and "or" and it'd be kinda weird to have "or if" without an "and if". it's equivalent to having a nested "if" at the very end of the "if" body. (only runs if the parent body ran *and* the expression is truthy.)

also, I'm sure some of you will argue that the truth table should look more like this instead:

x | y | z | result
0 | _ | 0 | (none)
0 | _ | 1 | 3
1 | 0 | 0 | 1
1 | 0 | 1 | 1,3
1 | 1 | _ | 1,2,3

and I say, no it shouldn't. if it were to do this, you'd have a hard time defining the semantics of elif and else for this. (just try it, it'll make your head spin.)
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/5UKDW3NVGTM3E4TORZN42G6S4ZX42TZD/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to