ternary operator

David LeBlanc whisper at oz.net
Fri Feb 7 05:15:46 CET 2003


> What exactly do you mean by "short circuiting conditionals"?
> I thought it just meant something like C's ternary operator.
> Algol 60 had something like that.  You could say
>    x = if a>=0 then sqrt(a) else sqrt(-a);
> which would take the square root of the absolute value of a.
> Short circuiting just means the non-selected branch doesn't get evaluated.

Incorrect. Short circuiting refers to a complex conditional aborting
evaluation as soon as it fails (technically, as soon as the result is
determinable), as in:

	if a > b and c < d:
		print e

If a <= b then c will never be evaluated against d: that's the short
circuit. Life gets "interesting" if there is a side effect in the
unevaluated portion of the conditional:

	if a > b and c < d():
		print e

d() might never get called. Not good if d() does something you depend on.

Dave LeBlanc
Seattle, WA USA

More information about the Python-list mailing list