[Python-Dev] [Fwd: In Python 2.6, bytes is str]

Steve Holden steve at holdenweb.com
Mon Oct 6 08:43:45 CEST 2008

This does make it look rather as though bytes == str was a decision
whose consequences weren't fully appreciated before implementation.

Was this horror anticipated?


-------- Original Message --------
Subject: In Python 2.6, bytes is str
Date: Sun, 05 Oct 2008 22:30:17 -0700
From: Bryan Olson <fakeaddress at nowhere.org>
Organization: at&t http://my.att.net/
To: python-list at python.org
Newsgroups: gmane.comp.python.general

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 3.gold, I'd advocate removing
the pre-defined 'bytes', or maybe defining it as something else.


Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/

More information about the Python-Dev mailing list