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