Guido van Rossum <gu...@python.org> added the comment:
> > Because bool is embedded in int, it's okay to return a bool value *that > > compares equal to the int from the corresponding int operation*. > Agreed that it's okay, but I'd like to understand why it's considered > *desirable*. What use-cases benefit from having `x | y` give `True` or > `False` rather than `1` or `0` when `x` and `y` are bools? Is the intent that > `x & y` and `x | y` provide shorter ways to spell `x and y`, `x or y`, or (as > I think Serhiy's suggesting) is this about catering to people coming from > other languages and expecting `&` and `|` to be the right operations for > doing logic with bools? > From my integer-centric point of view, | and & are bitwise integer > operations, not logical operations; they only *happen* to apply to bool > because a bool is an int, but they're not natural boolean operations (in > exactly the same way that +, -, *, etc. aren't natural boolean operations). > "and" and "or" seem the "one obvious way to do it" for logical operations on > bools; I don't think I understand why anyone would want to use | and & on > bools to get another bool, instead of just using `or` and `and`. For one thing, you can override `&` and `|` but you can't override `and` and `or`. Probably when we introduced book we should have thought harder about it, but I don't think we should change anything at this point, so I'm not sure why whether it's worth trying to uncover the original deep motivations (probably they weren't so deep). ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue37831> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com