For review: PEP 308 - If-then-else expression

Dan Bishop danb_83 at
Sat Feb 8 01:20:49 CET 2003

Guido van Rossum <guido at> wrote in message news:<mailman.1044638179.4983.python-list at>...
> Given that if-then-else expressions keep being requested, I hereby put
> forward a proposal.  I am neutral on acceptance of the proposal; I'd
> like the community to accept or reject it or come up with a
> counter-proposal.  Please understand that I don't have a lot of time
> to moderate the discussion; I'll just wait for the community to
> discuss the proposal and agree on some way to count votes, then count
> them.
>     The proposed syntax is as follows:
>         <expression1> if <condition> else <expression2>
>     To disambiguate this in the context of other operators, the
>     "if...else" part in the middle acts like a left-associative binary
>     operator with a priority lower than that of "or", and higher than
>     that of "lambda".

I like the idea but hate the (imho) convoluted order of the condition
and expressions.
> Alternatives
>     If we could live with adding a new keyword, we could use:
>         if <condition> then <expression1> else <expression2>
>     Apart from the problem of introducing a new keyword for a minor
>     feature, this also suffers from ambiguity at the start of a
>     statement; for example:

In the other thread, I suggested the syntax

(if condition: expression1 else expression2)  # parentheses are

which introduces no new keywords or punctuation, and doesn't suffer
from the ambiguity you described.

More information about the Python-list mailing list