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

Sean Ross frobozz_electric at hotmail.com
Fri Feb 7 17:11:39 EST 2003


Another alternative would be:

when <condition>, <expression1> else <expression2>

or

when <condition>: <expression1> else <expression2>

This, of course, is scarcely different from the current use of if/else,
except of course that it is a one-liner...

> x when C else y when D else z <==> x when C else (y when D else z)
> x or y when C else z        <==> (x or y) when C else z
> x when C else y or z        <==> x when C else (y or z)
> lambda: x when C else y     <==> lambda: (x when C else y)
> x when C else lambda: y     <==> SyntaxError
> x when C else y, z          <==> (x when C else y), z
> x, y when C else z          <==> x, (y when C else z)
>
> and, in particular:
>
> if x when C else y:
>     pass
>
> as opposed to:
>
> if x if C else y:
>     pass
>
when C, x else when D, y else z <==> when C, x else (when D, y else z)
when C, x or y else z   <==> when C, (x or y) else z
when C, x else y or z        <==> when C, x else (y or z)
lambda: when C, x else y     <==> lambda: (when C, x else y)
when C, x else lambda: y     <==> SyntaxError
when C, x else y, z          <==> (when C, x else y), z
x, when C, y else z          <==> x, (when C, y else z)

 and, in particular:

 if when C, x else y:
    pass

 as opposed to:

 if x if C else y:
     pass


I think maybe 'x when C else y' is better, but, I figured I'd offer the
suggestion anyway.
Sean






More information about the Python-list mailing list