bytearray inconsistencies?

Mark Lawrence breamoreboy at yahoo.co.uk
Sat Dec 21 20:53:41 CET 2013


On 21/12/2013 13:20, Peter Otten wrote:
> Mark Lawrence wrote:
>
>> On 21/12/2013 01:58, Ned Batchelder wrote:
>>>
>>> If you have a zero, you can split on it with:
>>> bytestring.split(bytes([0])), but that doesn't explain why find can take
>>> a simple zero, and split has to take a bytestring with a zero in it.
>>>
>>
>> Create a bytearray(range(256)) and partition it on 128.  I'd expect to
>> see the original effectively cut in half with 128 as the separator.  You
>> actually get the original with two empty bytearrays, which makes no
>> sense to me at all.
>
>>>> bytearray(b"alpha\x00\x00\x00beta").partition(0)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> ValueError: empty separator
>>>> bytearray(b"alpha\x00\x00\x00beta").partition(1)
> (bytearray(b'alpha'), bytearray(b'\x00'), bytearray(b'\x00\x00beta'))
>>>> bytearray(b"alpha\x00\x00\x00beta").partition(2)
> (bytearray(b'alpha'), bytearray(b'\x00\x00'), bytearray(b'\x00beta'))
>
> suggests that there is an implicit cast to bytearray
>
>>>> bytearray(0)
> bytearray(b'')
>>>> bytearray(2)
> bytearray(b'\x00\x00')
>
> While consistent I don't see how this can ever be the desired behaviour and
> recommend that you file a bug report.
>

http://bugs.python.org/issue20047

-- 
My fellow Pythonistas, ask not what our language can do for you, ask 
what you can do for our language.

Mark Lawrence




More information about the Python-list mailing list