El secreto principal del bloque else en bucles python

Este es un breve artículo para principiantes. Seguramente sabes que en Python para bucles fory la whileunidad se proporciona else. Y hay mucha confusión con este bloque, porque su acción no es intuitiva a primera vista. Debe dedicar un poco de tiempo o consultar la documentación cada vez que aparece:



for f in files:
    if f.uuid == match_uuid:
        break
else:
    raise FileNotFound()


¿Cuándo habrá una excepción: cuando no se encuentra el archivo? Cuando fue encontrado? ¿Cuándo está vacía la lista? Esta pregunta es difícil de responder, porque el bloque elseestá al mismo nivel que el bloque fory parece que se trata de algún tipo de condición relacionada con la lista misma; por ejemplo, cuando forno encontré ningún registro. Pero es suficiente conocer el secreto principal del bloque elsepara los bucles para no perder nunca más el tiempo:



El bloque elsedespués de los bucles no pertenece al bucle en sí, ¡sino al operador break!



De hecho, el bloque elsese ejecutará en cualquier caso, a menos que el operador haya interrumpido la ejecución del bucle break, returno raise.



Si lee el ejemplo anterior de esta manera: "si el archivo tiene el uuid que necesitamos, finalice el ciclo, de lo contrario arroje una excepción", entonces todo encaja.




All Articles