Antoine Pitrou wrote:
But on the contrary, trying to compress control flow in a single line breaks the visual structure expectation for Python code (in which most control flow is introduced by a colon and a linefeed).
We've had control flow in expressions for a long time. The 'and' and 'or' operators affect control flow, but nobody complains that they "break the visual flow". Quite the opposite: they're useful because they *maintain* the visual flow. They allow the code to be read declaratively without thinking in terms of control flow. The same thing applies to the if-expression, and comprehensions, and the proposed except-expression. They're attractive because they expand the range of code that can be written in a declarative rather than an imperative style. Often they allow something to be written on a single line that would otherwise require multiple lines, but that's not the only reason for using them. In fact, I would say that using them *just* to save space is often a bad idea -- if the code isn't easier to read when written declaratively, then you shouldn't be writing it that way, even if it is shorter. -- Greg