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