[Python-Dev] Re: Trinary Operators

Gerald S. Williams gsw@agere.com
Fri, 7 Feb 2003 14:37:57 -0500


To me, the major problem with the (a and [b] or [c])[0]
solution shown in the FAQ is that it's not immediately
clear what you are doing. A more likely spelling of that
solution is:

  def ifelse(result): return result[0]
  ...
  x1 = ifelse(a and [x] or [y])
  x2 = ifelse(a and [x] or b and [y] or [z])
  x3 = ifelse(a and [x] or b and [y] or c and ...)

The q() function solution shown there doesn't extend
as nicely and forces you to add "lambda:" if you don't
want both alternatives evaluated.

-Jerry