[Python-Dev] Format strings, Unicode, and Py2.7: need clarification
Random832
random832 at fastmail.com
Thu May 18 10:25:24 EDT 2017
On Thu, May 18, 2017, at 01:14, Hobson Lane wrote:
> Because `.format()` is a method on an instantiated `str` object in e and
> so
> must return the same type
That it *must* return the same type is overstating the matter. Split
returns a list (and, rather like %, the list is of unicode or str
objects depending on the argument). Join will return a unicode object if
any of the elements of the sequence are unicode. I was honestly
surprised though to see that % returns unicode when formatting a unicode
value, since my mental model of %s was more like {!s} - call str() on
whatever object is at the given position in the right-hand argument.
This kind of ad hoc implementation decision (format always returns str,
other methods can return unicode, ljust/rjust refuse to accept a
unicode character argument) is what Python 3 moved away from.
More information about the Python-Dev
mailing list