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. _______________________________________________ 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