Python 3.5, bytes, and %-interpolation (aka PEP 461)

Steven D'Aprano steve+comp.lang.python at pearwood.info
Tue Feb 25 00:55:14 CET 2014


On Mon, 24 Feb 2014 11:54:54 -0800, Ethan Furman wrote:

> Greetings!
> 
> A PEP is under discussion to add %-interpolation back to the bytes type
> in Python 3.5.
> 
> Assuming the PEP is accepted, what *will* be added back is:
> 
> Numerics:
> 
>    b'%d' % 10  --> b'10'
>    b'%02x' % 10  --> b'0a'
> 
> Single byte:
> 
>    b'%c' % 80  --> b'P'

Will %c also accept a length-1 bytes object?

b'%c' % b'x'
=> b'x'



> and generic:
> 
>    b'%s' % some_binary_blob --> b'tHE*&92h4' (or whatever)

Will b'%s' take any arbitrary object, as in:

b'Key: %s' % [1, 2, 3, 4]
=> b'Key: [1, 2, 3, 4]'


or only something which is already bytes (i.e. a bytes or bytearray 
object)?



> What is under debate is whether we should also add %a:
> 
>    b'%a' % some_obj  --> b'some_obj_repr'
> 
> What %a would do:
> 
>    get the repr of some_obj
> 
>    convert it to ascii using backslashreplace (to handle any code points
>    over 127)
> 
>    encode to bytes using 'ascii'
> 
> Can anybody think of a use-case for this particular feature?


Not me.




-- 
Steven



More information about the Python-list mailing list