Имея x.split(y)
всегда возвращает список 1 + x.count(y)
элементов является драгоценной закономерностью - а @ gnibbler уже указал, что делает split
и join
точные обратный друг друг (как они , очевидно , должно быть), но и точно отображает семантику всех видов разделителей присоединенных записей ( такие как csv
строки файлов [[за исключением проблем с цитированием]], строки из /etc/group
Unix и т. д.), он позволяет (как упоминалось в ответе @ Roman) легко проверять (например) абсолютные и относительные пути (в путях к файлам и URL-адресах), и так далее.
Другой способ взглянуть на это состоит в том, что вы не должны бессмысленно выбрасывать информацию из окна без всякой выгоды. Что можно получить, сделав x.split(y)
эквивалент x.strip(y).split(y)
? Ничего, конечно - вторую форму легко использовать, когда вы имеете в виду именно это, но если бы первая форма произвольно считалась означающей вторую, у вас было бы много работы, когда вам действительно нужна первая ( что далеко не редко, как указано в предыдущем абзаце).
Но на самом деле мышление в терминах математической закономерности - это самый простой и самый общий способ научиться разрабатывать приемлемые API. Возьмем другой пример, очень важно, чтобы для любого действительного x
и y
x == x[:y] + x[y:]
- это сразу указывает, почему следует исключить одну крайность среза . Чем проще инвариантное утверждение, которое вы можете сформулировать, тем больше вероятность того, что полученная семантика - это то, что вам нужно в реальной жизни - часть мистического факта, что математика очень полезна при работе со вселенной.
Попробуйте сформулировать инвариант для split
диалекта, в котором начальные и конечные разделители имеют специальный регистр ... контрпример: строковые методы, такие как isspace
не максимально простые - x.isspace()
эквивалентно x and all(c in string.whitespace for c in x)
- это глупое начало x and
, поэтому вы так часто обнаруживаете, что кодируете not x or x.isspace()
, чтобы вернуться к простоте, которая должна была быть is...
реализована в строковых методах (при этом пустая строка "есть" все, что вы хотите - вопреки здравому смыслу прохожего, возможно [[пустые множества, например ноль & c, всегда сбивали с толку большинство людей ;-)]], но полностью соответствовали очевидному, хорошо отточенному математическому здравому смыслу! -).