[Python-ideas] Changing the meaning of bool.__invert__

Koos Zevenhoven k7hoven at gmail.com
Fri Apr 8 08:28:08 EDT 2016


On Fri, Apr 8, 2016 at 4:40 AM, Steven D'Aprano <steve at pearwood.info> wrote:
> On Thu, Apr 07, 2016 at 11:08:38AM -0700, Guido van Rossum wrote:
>
>> To be more precise, there are some "arithmetic" operations (+, -,
>> *, /, **) and they all treat bools as ints and always return ints;
>> there are also some "bitwise" operations (&, |, ^, ~) and they should
>> all treat bools as bools and return a bool.
>
> You missed two: >> and <<. What are we to do with (True << 1)?
>

Not everyone considers bit shifts 'bitwise', as they don't act at the
level of individual bit positions:

https://en.wikipedia.org/wiki/Bitwise_operation

> Honestly, I cannot even imagine what it means to say "shift a truth
> value N bits". I think the idea that bitwise operations on bools are
> actually boolean operations in disguise is not a well-formed idea.
> Sometimes it happens to work out (& | ^), and sometimes it doesn't (<<
> and ~).

One point of view is that bitwise operations should stay within bool,
while shifts return ints, the left-shift operations actually being
much more useful than "left-pad" ;). The main point of >> can be seen
as consistency, although perhaps useless.

That said, I don't really have an opinion on the OP's suggestion.

-Koos


More information about the Python-ideas mailing list