[Python-Dev] PEP 460 reboot

Mark Shannon mark at hotpy.org
Mon Jan 13 09:46:13 CET 2014


On 13/01/14 03:47, Guido van Rossum wrote:
> On Sun, Jan 12, 2014 at 6:24 PM, Ethan Furman <ethan at stoneleaf.us> wrote:
>> On 01/12/2014 06:16 PM, Ethan Furman wrote:
>>>
>>>
>>> If you do :
>>>
>>> --> b'%s' % 'some text'
>>
>>
>> Ignore what I previously said.  With no encoding the result would be:
>>
>> b"'some text'"
>>
>> So an encoding should definitely be specified.
>
> Yes, but the encoding is no business of %s or %. As far as the
> formatting operation cares, if the argument is bytes they will be
> copied literally, and if the argument is a str (or anything else) it
> will call ascii() on it.

It seems to me that what people want from '%s' is:
Convert to a str then encode as ascii for non-bytes
or copy directly for bytes.

So why not replace '%s' with '%a' for the ascii case and
with '%b' for directly inserting bytes.
That way, the encoding is explicit.

I think it is vital that the encoding is explicit in all cases where
bytes <-> str conversion occurs.

Cheers,
Mark.




More information about the Python-Dev mailing list