Short if

Paul Rubin http
Thu Jul 8 15:58:33 EDT 2004


"Paul Sweeney" <reverse.ku.oc.issolok at nothypgnal.delrest.co.uk> writes:
> >   bool = false
> >   string = 'This is ' + (( bool ) ? 'true' : 'false')
> 
> If you are really convinced that this is a good road to go down (think of
> code readability), you could do
> 
>     bool = False   # check capitalisation!
>     string = 'This is ' + ('false','true')[bool]

But that can easily become incorrect when the branches have side effects:

     string = 'This is ' + (false(), true())[bool]

You have to do something like:

    string = 'This is ' + (lambda: false(), lambda: true())[bool]()

> I never liked the C ? operator, always finding code was clearer using the
> full if, and this hack is even worse!

Which is more readable depends on the context.  Sometimes the 'if'
just bloats up your code.



More information about the Python-list mailing list