Terry J. Reedy added the comment:

David is correct that the current phrasing is correct.  The phase 'x has a 
boolean value of True' means 'bool(x) is True', which is always true for match 
objects, as well as for non-zero numbers, non-empty collections, and many other 
things.  This does *not* imply equality between the object and its boolean 
value.  In fact, nearly all objects are not equal to their boolean value.  
Clayton could just as well as have written "blah = 'a'" or "blah = 1 + 1j" and 
gotten the name non-surprising result.

There is nothing special about boolean values in this respect.  The string 
value of x is str(x) and in general, x != str(x).  (This also sometimes 
confuses people.)  Similarly, if x has an integral value int(x), it does not 
necessarily equal that value: int(3.1459) != 3.

I think the doc is fine as is.  The fact that "3 is considered to be '3' in a 
display context" does not mean that we do not write "the string value of 3 is 
'3'".  It is fundamental to Python that essentially all objects o have a string 
value str(o) and a boolean value bool(o) and that those mappings are sometimes 
used automatically for display and logic.

----------
nosy: +terry.reedy

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue22843>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to