Tener x.split(y)
siempre devolver una lista de 1 + x.count(y)
elementos es una regularidad preciosa - como @ gnibbler ya ha señalado, hace split
y join
exactamente inversas entre sí (como obviamente deberían ser), también mapea con precisión la semántica de todo tipo de registros unidos por delimitadores ( como csv
líneas de archivo [[netos de problemas de citas]], líneas de /etc/group
Unix, etc.), permite (como se menciona en la respuesta de @ Roman) comprobaciones sencillas de (por ejemplo) rutas absolutas frente a relativas (en rutas de archivos y URL), Etcétera.
Otra forma de verlo es que no debe tirar información por la ventana sin obtener ganancias. ¿Qué se ganaría al hacer x.split(y)
equivalente a x.strip(y).split(y)
? Nada, por supuesto - es fácil de usar la segunda forma, cuando eso es lo que quieres decir, pero si la primera forma fue considerada arbitraria en el sentido de la segunda, que tendrían mucho trabajo que hacer cuando no desea que el primero de ellos ( lo cual está lejos de ser raro, como señala el párrafo anterior).
Pero realmente, pensar en términos de regularidad matemática es la forma más simple y general en la que puede aprender a diseñar API aceptables. Para tomar un ejemplo diferente, es muy importante que para cualquier valor válido x
y y
x == x[:y] + x[y:]
- que indica inmediatamente por qué se debe excluir un extremo de un corte . Cuanto más simple sea la afirmación invariante que pueda formular, más probable es que la semántica resultante sea lo que necesita en los usos de la vida real, parte del hecho místico de que las matemáticas son muy útiles para tratar con el universo.
Intente formular el invariante para un split
dialecto en el que los delimitadores iniciales y finales están en mayúsculas especiales ... contraejemplo: métodos de cadena como isspace
no son extremadamente simples, x.isspace()
es equivalente a x and all(c in string.whitespace for c in x)
, esa entrada tonta x and
es la razón por la que tan a menudo se encuentra codificando not x or x.isspace()
, para volver a la simplicidad que debería haber sido diseñada en los is...
métodos de cadena (donde una cadena vacía "es" cualquier cosa que desee, al contrario del sentido del caballo del hombre en la calle, tal vez [[conjuntos vacíos, como cero & c, siempre ha confundido a la mayoría de la gente ;-)]], ¡pero se ajusta completamente al sentido común matemático obvio y refinado ! -).