On 05/06/2014 16:50, Chris Angelico wrote:
I wouldn't say they're second-class; it's more that the bytes type was
considered to be more like a list of ints than like a Unicode string,
and now that there are a few years' worth of real-world usage
information to learn from, it's known that some more string-like
operations will be extremely helpful. So now they're being added,
which I agree is a good thing.
in python 2 str and unicode were much more comparable. On balance I think just
reversing them ie str --> bytes and unicode --> str was probably the right thing
to do if the default conversions had been turned off. However making bytes a
crippled thing was wrong.
Whether b"a" should be b'a' or ord(b'a') is another sticking point.
The Py2 str does the first, the Py3 bytes does the second. That one's
a bit hard to change, but what I'm not sure of is how significant this
is to new-build Py3 code. Obviously it's a barrier to porting, but is
it important on its own? However, that's still not really "byte
strings are second class".
I dislike the current model, but that's because I had a lot of stuff to convert
and probably made a bunch of blunders. The reportlab code is now a mess of hacks
to keep it alive for 2.7 & >=3.3; I'm probably never going to be convinced that
uncode types are good. Bytes are the underlying concept and should have remained
so for simplicity's sake.