True inconsistency in Python
Erik Max Francis
max at alcyone.com
Mon Nov 17 21:35:59 EST 2003
KefX wrote:
> What if the expression is 37 lines long? (Can't happen? I'm LOOKING at
> such an
> example!) Fishing out the main comparison in such a monster isn't
> always the
> easiest thing to do. Of course I'm exaggerating here, since we usually
> don't
> write 37-line expressions, but still.
What if it's twenty pages long? I still don't see the benefit. If
you're looking at an expression in an if statement, you need to look at
the _whole_ expression to figure out what it's doing. I don't see how
ending it with `== True' makes it any more readable.
> Yes, all tests are boolean tests in the sense that they evaluate to a
> bool and
> the if statement then compares the result, but not all comparisons are
> boolean
> comparisons in the sense that we don't always compare to a boolean
> value. In
> other words, "a == 0" isn't comparing against true or false, it's
> comparing
> against an integer. It's worth noting here that omitting the "== 0"
> here is
> considered bad style by many (though this is by no means universal).
Well, if you leave off the `== 0', it means something else.
> The camp
> that would have you write "== false" invariably falls in the same camp
> that
> would have you write "== 0", because that way the two would be
> consistent in
> that you always specify what's being compared to what.
Not even a little. An explicit test for an individual value is one
thing. An explicit comparison for an individual value _when there are
only two possible categories_ (true or false) is utterly pointless,
because all it does is add the opportunity to create an error.
> Of course, this
> doesn't
> mean everybody would have you write "== 0" would also have you write
> "==
> false". The idea is consistency (I don't know how that slipped my mind
> in my
> original posting.)
It's not at all consistent, that's the problem. Not to mention the
fact, as others pointed out, that not all false values are False.
> I don't see how that would logically follow just from making an
> explicit bool
> test.
Because in Python the explicit Boolean test cannot possibly be anything
other than redundant. If it is not redundant, it is probably an error.
--
Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/
__ San Jose, CA, USA && 37 20 N 121 53 W && &tSftDotIotE
/ \
\__/ So little time, so little to do.
-- Oscar Levant
More information about the Python-list
mailing list