Este es un breve artículo para principiantes. Seguramente sabes que en Python para bucles for
y la while
unidad 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 else
está al mismo nivel que el bloque for
y parece que se trata de algún tipo de condición relacionada con la lista misma; por ejemplo, cuando for
no encontré ningún registro. Pero es suficiente conocer el secreto principal del bloque else
para los bucles para no perder nunca más el tiempo:
El bloque else
después de los bucles no pertenece al bucle en sí, ¡sino al operador break
!
De hecho, el bloque else
se ejecutará en cualquier caso, a menos que el operador haya interrumpido la ejecución del bucle break
, return
o 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.