Benjamin Kaplan wrote:
On Sun, Feb 15, 2009 at 11:57 AM, John Nagle <na...@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.
type(b'x')
<class 'bytes'>
type(bytearray(b'x'))
<class 'bytearray'>
ba = bytearray(b'abc')
ba[0] + ba[1]
195

   That's indeed how Python 2.6 works.  But that's not how
PEP 3137 says it's supposed to work.

Guido:

 "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?

                                John Nagle
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to