In Python 2.6, bytes is str

Bryan Olson fakeaddress at
Mon Oct 6 07:30:17 CEST 2008

Python 3 has the 'bytes' type, which the string type I've long wanted in 
various languages. Among other advantages, it is immutable, and 
therefore bytes objects can be dict keys. There's a mutable version too, 
called "bytearray".

In Python 2.6, the name 'bytes' is defined, and bound to str. The 2.6 
assignment presents some pitfalls. Be aware.

Consider constructing a bytes object as:

     b = bytes([68, 255, 0])

In Python 3.x, len(b) will be 3, which feels right.

In Python 2.6, len(b) will be  12, because b is the str, '[68, 255, 0]'.

I'm thinking I should just avoid using 'bytes' in Python 2.6. If there's 
  another Python release between 2.6 and, I'd advocate removing 
the pre-defined 'bytes', or maybe defining it as something else.


More information about the Python-list mailing list