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/