[pyar] "Hola mundo"[-27:27] vs "Errors should never pass silently."

Roberto Alsina ralsina en netmanagers.com.ar
Sab Abr 13 22:02:17 ART 2013


On 13/04/13 18:45, Martin Volpe wrote:
> Hola lista,
>
> In [1]: "Hola mundo"[-27:27]
> Out[1]: 'Hola mundo'
>
>
> Vi este caso de slice y me llamó mucho la atención, a mi criterio
> viola de forma evidente el zen de Python, debería tirar un IndexError,
> pero no lo hace.
>
> ¿Por que esto se diseñó así? ¿En que caso esto es más cómodo que un
> traceback?
> ¿Alguien' se olvido de poner un "pero" en el zen :P?

El zen está lleno de peros!

Por ejemplo, esto entra en "practicality beats purity".

¿Por qué? Porque si uno tuviera que asegurarse que los índices están
dentro del iterable, habría que testear la longitud de todo antes de
hacer un slice.
Entonces no podes hacer esto:

for item in l[:10]:

Y no podés hacer mipath.split("/")[0]

porque todo eso puede dar error, entonces tenes que llenar tu código de
horripilanteces como


try:
   cosa = mipath.split("/")[0]
except IndexError:
   cosa = mipath

o

mipath.split("/")[0] if "/" in mipath else mipath

o

for item in l[:min(10, len(l))]

Y ese último ni siquiera quiero escribir lo horrible que sería la
versión con excepciones :-)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130413/384745b3/attachment.html>


More information about the pyar mailing list