On 02/24/2014 02:33 PM, Nick Coghlan wrote:
Allowing %a also improves the consistency with text interpolation. In the case of %r, the inconsistency is based on needing to disallow arbitrary Unicode code points in the result and not wanting to redefine %r as a second way to spell %a. There's no corresponding reason to disallow %a - the result is guaranteed to be ASCII compatible, so there's no risk of data driven encoding errors, and no difference between doing the binary interpolation directly, or doing text interpolation and then encoding the result as ASCII. As far as use cases go, as someone else mentioned, the main one is likely to be binary logging and error reporting formats, as it becomes a quick and easy way to embed a backslash escaped string. However, my interest is more in providing an obvious way to do it and in minimising the differences between text and binary interpolation.
Jim Jewett had some use-cases that I'm happy to run with. (Thanks jJ!) So final question for %a: %a can only be used in Python 3 (3.2+, I believe) -- do we want to be able to use %a as a short way of including text? In Python2/3 code bases it will need to be '%s' % 'a string'.encode('ascii'). In Python 3 only code bases that could be shortened to '%a' % 'a string': pro: much easier if "mojibake" ( \x and \u sequences ) sneak in, the original data can still be retrieved cons: has surrounding quotes (would need to have bytes.__mod__ remove them) -- ~Ethan~ _______________________________________________ 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