On 01/07/2014 04:15 PM, Steven D'Aprano wrote:
Ethan Furman wrote:
On 01/07/2014 07:19 AM, David Robinow wrote:
Python 3 grudgingly allows the "abomination" of byte strings (is that
what they're called?)
No, that is *not* what they're called. If you find any place in the
Python3 docs that does call them bytestrings please submit a bug report.
The name of the class is "bytes", but what they represent *is* a string of
bytes, hence "byte-string". It's a standard computer science term for
distinguishing strings of text from strings of bytes.
I do not disagree with your statements, yet calling the bytes type a bytestring suggests things which are not true, such
as indexing returning another bytestring. The core-dev have thus agreed to not call it that in the documentation in
hopes of lessening any confusion.
On 01/07/2014 08:12 AM, Steven D'Aprano wrote:
People trying to port these libraries from 2.7 to 3 run into this
problem, and it causes them grief. This little difference between bytes
in 2.7 and bytes in 3.x is a point of friction which makes porting
harder, and I'm trying to understand the reason for it.
If I recall correctly the way it was explained to me:
bytes (lists, arrays, etc.) is a container, and when a container is
indexed you get whatever the container held. If you slice the container
you get a smaller container with the appropriate items.
(There's also a bytearray type, which is best considered as an array. Hence
the name.) Why decide that the bytes type is best considered as a list of
bytes rather than a string of bytes? It doesn't have any list methods, it
looks like a string and people use it as a string. As you have discovered,
it is an inconvenient annoyance that indexing returns an int instead of a
one-byte byte-string.
I think that, in hindsight, this was a major screw-up in Python 3.
The general consensus seems to be agreement (more or less) with that feeling,
but alas it is too late to change it now.
--
~Ethan~
--
https://mail.python.org/mailman/listinfo/python-list