On Thu, Apr 07, 2016 at 01:17:57PM +0000, Antoine Pitrou wrote:
Steven D'Aprano <steve@...> writes:
Numpy's boolean type does the more useful (and more expected) thing:
~np.bool_(True) False
Expected by whom?
By anyone who takes booleans at face value (that is, takes booleans as representing a truth value and expects operations on booleans to reflect the semantics of useful operations on truth values, not some arbitrary side-effect of the internal representation of a boolean...).
Bools in Python have *always* been integers, so who are these people taking booleans at face value? Beginners? If so, say so. That's a motive I can understand. But I think that people who expect bools to be real truth values, like in Pascal, probably won't expect BITWISE operations to operate on them at all and will use the BOOLEAN operators and, or, not. Bitwise operators operate on a sequence of bits, not a single truth value. What do these naive "bools are truth values" people think: True << 3 should return? I don't think we need a second way to spell "not bool". Bools have always been ints in Python, and apart from their fancy string representation they behave like ints. I don't think it helps to make ~ a special case where they don't.
But I'm not surprised by such armchair commenting and pointless controversy on python-ideas, since that's what the list is for....
Thanks for your feedback, I'll give it the due consideration it deserves. -- Steve