[Python-Dev] PEP 460 reboot (original) (raw)

Guido van Rossum guido at python.org
Mon Jan 13 22:32:28 CET 2014


I will doggedly keep posting to this thread rather than creating more threads.

In another thread, Nick has said he's okay with my proposal (not sure if that includes %s or not, but it now seems of lesser importance) as long as we simultaneously introduce formatb() and formatb_map() (the latter is just a minor variation of the former, so I won't mention it further).

But formatb() feels absurd to me. PEP 460 has neither a precise specification or any actual examples, so I can't tell whether the intention is that the format string can only contain {...} sequences or whether it can also contain "regular" characters. Translating to formatb(), my question comes down to the legality of the following example:

b'Hello, {}'.formatb(name) # Where name is some bytes object

If this is allowed, it reintroduces the ASCII bias (since the substring 'Hello' is clearly ASCII).

If this isn't allowed, it feels like a perversion of the notion of a "formatting language", and I really don't see the attraction over using a combination of concatenation and the struct module, perhaps augmented with some use of bytes([i]) as an alternative to %c or {!c} (if that is what is meant by PEP 460 with 'c modifier' -- I can't find the word 'modifier' in the docs for format().

Note that I honestly don't understand which of these PEP 460 means.

Either way, PEP 460's motivation seems kind of subjective and esthetic:

""" While there are reasonably efficient ways to accumulate binary data (such as using a bytearray object, the bytes.join method or even io.BytesIO), none of them leads to the kind of readable and intuitive code that is produced by a %-formatted or {}-formatted template and a formatting operation. """

I would buy this if a binary format string could contain embedded text (like 'Hello' in my example above), but then the argument about avoiding ASCII bias seems to fall apart so I am at a loss about what Nick actually wants, and even about what PEP 460 actually specifies.

-- --Guido van Rossum (python.org/~guido)



More information about the Python-Dev mailing list