[Python-Dev] Format strings, Unicode, and Py2.7: need clarification (original) (raw)

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