Getting rid of bitwise operators in Python 3?

Grant Edwards grante at visi.com
Sat Sep 22 07:19:42 CEST 2007


On 2007-09-22, Carl Banks <pavlovevidence at gmail.com> wrote:

> Anyone with me here?  (I know the deadline for P3 PEPs has passed; this 
> is just talk.)

Not me.

> Not many people are bit-fiddling these days.

I do.

> One of the main uses of bit fields is flags, but that's not
> often done in Python because of keyword arguments and dicts,
> which are lot more versatile.  Another major use, talking to
> hardware, is not something oft done in Python either.

I do it all the time.

Bit fiddling is also required for implementing communications
prototocols.

> It seems like this occasional usage wouldn't justify having built-in 
> operators on its own.  And with the int/long unification, it makes a bit 
> less sense to think of integers as a bit field.  Python has these 
> operators because of its heritage, but Python continues to move away from 
> the bad habits of its ancestors (integer division and so on), and I 
> wonder if this isn't another one.
>
> Of course I'm not suggesting to get rid of bitwise operations altogether; 
> just make them builtin functions: "x & 1" becomes "bitwise_and(x,1)" and 
> so on.
>
> Is it worth it to make such a change?  It would remove a lot of operators 
> (11 by my count), vastly simplifying syntax,  Which, IMHO, is no small 
> thing.

If you don't want to use the bitwise operations, then ignore
them.  Presto!  Simpler syntax.

> Obviously, how widespread their usage is would matter.  But keep in mind 
> it would also be easy to convert the code automatically, because the 
> Python parser could reliably find all bitwise operations reliably.

The resulting code wold be fugly.

-- 
Grant




More information about the Python-list mailing list