Proposal: function which simulates C ?: operator

Paul Rubin http
Sun Jul 11 13:57:00 EDT 2004


Adal Chiriliuc <me at spammers.com> writes:
> I think a function similar to the one below should be added to the
> builtin module:
> 
> def boolselect(condition, trueresult, falseresult):
>     if condition:
>         return trueresult
>     else:
>         return falseresult

That doesn't work because both results get evaluated either way.  E.g.

   boolselect(x==0, f(x), g(x))  

calls both f and g.  You need something like

  (lambda: g(x), lambda: f(x))[bool(condition)]()



More information about the Python-list mailing list