nagle at animats.com
Sun Feb 15 13:09:09 EST 2009
Benjamin Kaplan wrote:
> On Sun, Feb 15, 2009 at 11:57 AM, John Nagle <nagle at animats.com> wrote:
>> Benjamin Peterson wrote:
> Because b'x' is NOT a bytearray. It is a bytes object. When you actually use
> a bytearray, it behaves like you expect.
> <class 'bytes'>
> <class 'bytearray'>
>>>> ba = bytearray(b'abc')
>>>> ba + ba
That's indeed how Python 2.6 works. But that's not how
PEP 3137 says it's supposed to work.
"I propose the following type names at the Python level:
* bytes is an immutable array of bytes (PyString)
* bytearray is a mutable array of bytes (PyBytes)"
"Indexing bytes and bytearray returns small ints (like the bytes type in
3.0a1, and like lists or array.array('B'))."
(Not true in Python 2.6 - indexing a "bytes" object returns a "bytes"
object with length 1.)
"b1 + b2: concatenation. With mixed bytes/bytearray operands, the return type is
that of the first argument (this seems arbitrary until you consider how += works)."
(Not true in Python 2.6 - concatenation returns a bytearray in both cases.)
Is this a bug, a feature, a documentation error, or bad design?
More information about the Python-list