[Python-Dev] "funny".split("")

David Abrahams David Abrahams" <david.abrahams@rcn.com
Tue, 12 Mar 2002 14:00:34 -0500


There's a reason to pursue the OP's expected result as opposed to just
settling for list("funny"). If we pick a reasonable behavior for this
case, it will save some number of people from having to write:

    if len(sep):
        divided = s.split(sep)
    else:
        divided = list(s)

Which just makes the code harder-to-read.

What's the point in making s.split('') an error? Assuming you document
the behavior, the only people served by the error message are people who
haven't bothered to read the docs. However, their code is broken anyway.

Causing an error when there's the slightest ambiguity in what the code
might mean in the absence of documentation doesn't serve anyone. I think
the introduction of the MRO is in part motivated by this philosophy, and
it's a good idea, when there's a sensible non-error behavior, to
implement it.

'Course, backward-compatibility is an issue.

-Dave

----- Original Message -----
From: "Andrew Koenig" <ark@research.att.com>
To: <brian@sweetapp.com>
Cc: "'Christian Tismer'" <tismer@tismer.com>; <python-dev@python.org>
Sent: Tuesday, March 12, 2002 1:43 PM
Subject: Re: [Python-Dev] "funny".split("")


> >> Why this?
> >> I would expect
>
> >> ['f','u','n','n','y']
>
> Brian> Why wouldn't you expect this:
> Brian> ['', 'f', 'u', 'n', 'n', 'y', '']
>
> For the same reason I wouldn't expect this:
>
> ['', '', 'f', 'u', 'n', 'n', 'y', '', '']
>
> whatever that reason might be.  That is:  You give me a reason why
> I should expect ['', 'f', 'u', 'n', 'n', 'y', ''] instead of
> ['f','u','n','n','y'] and I'll warrant that the same reason,
> whatver it might happen to be, would argue also for
> ['', '', 'f', 'u', 'n', 'n', 'y', '', '']
>
> If you're going to allow a null separator at all, then there has to be
> a rule to choose one of the infinite number of possible return values.
>
> One plausible rule, which would have the advantage of working the
> same for empty and nonempty separators, is that no element of
> the result can be equal to the separator.
>
> --
> Andrew Koenig, ark@research.att.com,
http://www.research.att.com/info/ark
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> http://mail.python.org/mailman/listinfo/python-dev