On Mon, 13 Jan 2014 13:56:44 -0800
Guido van Rossum <gu...@python.org> wrote:
> On Mon, Jan 13, 2014 at 1:40 PM, Antoine Pitrou <solip...@pitrou.net> wrote:
> > On Mon, 13 Jan 2014 13:32:28 -0800
> > Guido van Rossum <gu...@python.org> wrote:
> >>
> >> 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
> >
> > Yes, it's allowed. But so is:
> >
> >   b'\xff\x00{}\x85{}'.formatb(payload, trailer)
> >
> > The ASCII bias is because of the bytes literal notation.
> 
> But it is nevertheless there. Including arbitrary hex bytes in the
> ASCII range should be a liability, unless you have memorized the hex
> codes for ASCII and know that e.g. '\x25' is '%' and '\x7b' is '{'.

That's a good point. I hadn't really thought about that.

> The above example (is it from a real protocol?)

(no, it's cooked up)

> would be just as clear
> or clearer written as
> 
> b'\xff\x00' + payload + b'\x85' + trailer
> 
> or
> 
> b''.join([b'\xff\x00', payload, b'\x85', trailer])
> 
> and reasoning about those versions requires no understanding of ASCII.

Fair enough.

Regards

Antoine.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to