Maybe if it was more expressive, e.g. covering the case such as you suggesting, it would go through?
Also, I still don't see why changing analogous statement order when making 1-line expressions is a good idea.
E.g. there was a statement:
# Statement
try:
expression1
except Exception:
expression2
except Exception:
expression1
el<if cond1:
expression3
elif cond2:
expression4
else:
expression5>
finally:
expression6
It’s analogous expression then could be:
val = try expr1() except Exception ? expr2() el<if cond1() ? expr3() else expr4()> finally expr5()
Simple if-else statement would be everything in between <> in both statement and expression.
Functional, consistent, expressive, in line with what is already there. Both “continue” and “break" would also be used in expressions same place as the statement. Maybe something else instead of “?”, but it doesn’t matter much to me, “?” would be just fine.
This would also partly cover my “rant” about C’s conditional expression. I.e. The order. Which probably has more weight in my aversion than it’s verbosity.
* Now argument that expressions read more naturally in this order raises a question "Why then isn’t it the same in statements?”.
* And argument that it’s easier for someone to learn without programming background also fails as even they would probably prefer “consistency" as opposed to "inconsistency, but 1 part reads like english."
I personally find it easier to learn when I understand and I understand when things make sense and follow patterns. Can it be that too much of this is being sacrificed for the sake of factors which are not as important?
David Mertz, Ph.D. writes:
I think the Python version does the right thing by emphasizing the
DEFAULT by putting it first, and leaving the predicate and fallback
until later in the expression (right for Pythonic code, not right
for other languages necessarily).
Aside: I think that's true for Pythonic scripting, but in general I
think you're just as likely to find that it's a genuine choice, and
that the condition is as interesting as either choice.
Variation on the theme of conditional expression: I'd often like to
write
var = computed() if cond() else break
or
var = computed() if cond() else continue
I wonder if that syntax has legs, or if it's too cute to stand.