computing with characters

Duncan Booth duncan.booth at invalid.invalid
Wed Apr 30 06:47:36 EDT 2008


Torsten Bronger <bronger at physik.rwth-aachen.de> wrote:

> The biggest ugliness though is ",".join().  No idea why this should
> be better than join(list, separator=" ").  Besides, ",".join(u"x")
> yields an unicode object.  This is confusing (but will probably go
> away with Python 3).

It is only ugly because you aren't used to seeing method calls on string 
literals. Here are some arguably less-ugly alternatives:

    print str.join(", ", sequence)

or:

    comma_separated = ", ".join

will let you use:

    print comma_separated(sequence)

or even just:

    SEPARATOR = ", "

followed by:

    SEPARATOR.join(sequence)

is no more ugly than any other method call.

It would make perfect sense for join to be a method on stringlike objects 
if it simply returned an object of the same type as the object it is called 
on. As you point out, where it breaks down is a str separator can return a 
unicode result and that is confusing: if you want a unicode result perhaps 
you should be required to use a unicode separator but that isn't going to 
happen (at least not in Python 2.x).

What definitely wouldn't make sense would be to make join a method of the 
list type (as it is in some other languages).



More information about the Python-list mailing list