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

Sean Ross sross at connectmail.carleton.ca
Sat Feb 8 18:30:47 CET 2003


> Sean> And, of course
>
> Sean>     if if C then x else y:
> Sean>         ...do stuff...
>
> Sean> is worse than both.
>
> I'm not sure, actually.  At least it alerts the reader that something
> is going on :-)

Now, that you mention it, yeah, it does alert the reader that something is
going on.
I suppose it's just the repitition of 'if' I don't care for...

How about:

   if when C then x else y:
       ...do stuff...

or

   if when C, x else y:
       ...do stuff...

instead?

Someone suggested the latter formulation would cause difficulties in lists
and tuples...
pfff...it's tough to think of something that would satisfy everyone isn't
it?

> Sean> Personally, I don't mind
>
> Sean>  if (y, x)[C]:
> Sean>     ...do stuff...
>
> Sean> although I don't consider it to be either obvious or clear.
>
> I *do* mind it, for two reasons:
>
> 1) It puts the false condition ahead of the true condition.

Yeah. I don't like that either, and:
    if {True: x, False:y}[C]:
        ...do stuff...
(as someone else suggested) doesn't appeal to me, although it does address
your first concern.

> 2) It evaluates both alternatives even though only one is needed.

Yep.

> Andrew Koenig, ark at research.att.com, http://www.research.att.com/info/ark






More information about the Python-list mailing list