[Python-Dev] PEP 332 revival in coordination with pep 349? [ Was:Re: release plan for 2.5 ?]
Josiah Carlson
jcarlson at uci.edu
Tue Feb 14 18:28:54 CET 2006
James Y Knight <foom at fuhm.net> wrote:
> I like it, it makes sense. Unicode strings are simply not allowed as
> arguments to the byte constructor. Thinking about it, why would it be
> otherwise? And if you're mixing str-strings and unicode-strings, that
> means the str-strings you're sometimes giving are actually not byte
> strings, but character strings anyhow, so you should be encoding
> those too. bytes(s_or_U.encode('utf-8')) is a perfectly good spelling.
I also like the removal of the encoding...
> Kill the encoding argument, and you're left with:
>
> Python2.X:
> - bytes(bytes_object) -> copy constructor
> - bytes(str_object) -> copy the bytes from the str to the bytes object
> - bytes(sequence_of_ints) -> make bytes with the values of the ints,
> error on overflow
>
> Python3.X removes str, and most APIs that did return str return bytes
> instead. Now all you have is:
> - bytes(bytes_object) -> copy constructor
> - bytes(sequence_of_ints) -> make bytes with the values of the ints,
> error on overflow
What's great is that this already works:
>>> import array
>>> array.array('b', [1,2,3])
array('b', [1, 2, 3])
>>> array.array('b', "hello")
array('b', [104, 101, 108, 108, 111])
>>> array.array('b', u"hello")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: array initializer must be list or string
>>> array.array('b', [150])
Traceback (most recent call last):
File "<stdin>", line 1, in ?
OverflowError: signed char is greater than maximum
>>> array.array('B', [150])
array('B', [150])
>>> array.array('B', [350])
Traceback (most recent call last):
File "<stdin>", line 1, in ?
OverflowError: unsigned byte integer is greater than maximum
And out of the deal we can get both signed and unsigned ints.
Re: Adam Olsen
> I'm starting to wonder, do we really need anything fancy? Wouldn't it
> be sufficient to have a way to compactly store 8-bit integers?
It already exists. It could just use another interface. The buffer
interface offers any array the ability to return strings. That may have
to change to return bytes objects in Py3k.
- Josiah
More information about the Python-Dev
mailing list