question about True values
J. Clifford Dyer
jcd at sdf.lonestar.org
Fri Oct 27 19:17:42 EDT 2006
I do see how mapping to Truth/Falsehood is more natural, and I do
believe that one of the great things about python is that it feels
natural in so many ways, and hence makes it easy to produce code, but
the one thing that Ms. Creighton points out that I can't get past is
that Python, even with its bool type, *still* evaluates somethingness
and nothingness, and True and False are just numbers with hats on.
>>> True + 3
4
>>> bool(True-1)
False
>>> bool(True-2)
True
>>> (10 > 5) + (10 < 5)
1
So when you say
>>>if 10 > 5:
... print "Yes!"
Python is not evaluating the truth of the matter, but, as Ms. Creighton
would say, the "somethingness" of that which 10 > 5 evaluates to. (1
aka True)
Furthermore, how do you explain this bizarreness in terms of "Truth" and
"Falsehood?" You have to go back to the fact that True=1 and that
REALLY, Python is dealing with somethingness and nothingness. It might
not be as direct a mental connection as True/False, but it is certainly
a more accurate one for understanding how Python works.
>>> (1 > 0) < 1
False
>>> 1 > 0 < 1
True
>>> 1 > (0 < 1)
False
>>> 10 > (0 < 1)
True
Finally, while True/False is a good mental mapping for numeric
comparisons, take the following:
>>> if "Cliff is a pillar of the open source community":
... print "thank you"
... else:
... print "bugger off"
bugger off
Clearly this is not true. (Google Cliff/Dyer open source: only 11
hits.), but the string is *something* so the if block gets evaluated.
Cheers,
Cliff
More information about the Python-list
mailing list