Defending the ternary operator
Andrew Dalke
adalke at mindspring.com
Mon Feb 10 09:06:57 CET 2003
Martin Maney:
> Better yet, it would save otherwise kind and compassionate people from
> having to foist these wretches off on the innocent who come to them for
> assistance.
Foist? The FAQ specifically says "in many cases .. but there's a flaw"
"ugly", "rare", and "as a last resort".
> But it's not an increase - it's a decrease. You get one form that is
> both safe and IMO far more readable in place of at least three
> different ugly, sometimes unsafe, hacks. (three has to be a lower
> bound, since we've seen at least one significant variation on all of
> the above just in recent pre-308 discussion)
I've been trying to show that people will be prone to use the ternary
if/else expression even when a better (by my definition of better)
option is available. Three such are
return True if x else False
instead of
return bool(x)
c=chr(48+i if i<10 else 55+i)
instead of
c = "0123456789ABCDEF"[i]
OR
c = hex(i)[2:]
a = x if x < y else y
instead of
a = min(x, y)
Not only that, but I've been trying to show that the
misuse rate, based on analysis of existing C/C++ code,
is roughly comparable to the proper use rate.
(A true Python expert is unlikely to misuse if/else
when a better Python solution exists, but I tried to factor
in that most of the user base is not an expert.)
Andrew
dalke at dalkescientific.com
More information about the Python-list
mailing list