PEP 308 - ternary operator

jcm joshway-without-spam at myway.com
Sun Feb 16 10:39:12 EST 2003


Wolfgang Strobl <wks000 at t-online.de> wrote:
...

> Right. It even allows nightmares like

>   h (*p++ - ' ' || !p++ ? *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? *p++ - ' ' || !p++ ? *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? *p++ - ' ' || !p++ ? 7 : *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? 36 : 59 * 89 * 5 * 2 : *p++ - ' '
>      || !p++ ? 6587 * 77 : 9 + 2 : *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? *p++ - ' ' || !p++ ? 9 : 5 : 37 : *p++ - ' '
>      || !p++ ? 5 + 5 : 4 : 20 : *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? *p++ - ' ' || !p++ ? 32 : 431 * 4 * 59 * 17 : *p++ - ' '
>      || !p++ ? 17 : 34 : 19 : *p++ - ' ' || !p++ ? 8 * 2 : *p++ - ' '
>      || !p++ ? 2 : 26 : *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? 82 * +576 : *p++ - ' '
>      || !p++ ? 33 : 22 : 5 * 5 : 3 * 4 : 3 : *p++ - ' '
>      || !p++ ? *p++ - ' ' || !p++ ? *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? 6 + +17 : *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? 13 : 6 : 9 * 2 : *p++ - ' '
>      || !p++ ? 15 : 7 * 2 : *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? 27 : 24 : 31 : *p++ - ' ' || !p++ ? *p++ - ' '
>      || !p++ ? +29 : 30 : 1);

> I had to look at the c parse tree in order to understand what it does. 

I'm not moved by this example.  Rewrite it with Python's "(a and [b]
or [c])[0]", or even just "a and b or c", and see if you like it
better.  (And of course a function call or something to approximate
C's "p++".)




More information about the Python-list mailing list