Es probable que muchos programadores de Python ignoren que la sintaxis de los whilebucles y forbucles incluye una else:cláusula opcional :
for val in iterable:
do_something(val)
else:
clean_up()
El cuerpo de la elsecláusula es un buen lugar para ciertos tipos de acciones de limpieza, y se ejecuta en la terminación normal del bucle: es decir, al salir del bucle returnu breakomitir la elsecláusula; saliendo después de que un lo continueejecuta. Sé esto solo porque lo busqué (una vez más), porque nunca puedo recordar cuándoelse se ejecuta la cláusula.
¿Siempre? En "falla" del bucle, como su nombre indica? En la terminación regular? ¿Incluso si se sale del bucle con return? Nunca puedo estar completamente seguro sin buscarlo.
Culpo mi persistente incertidumbre a la elección de la palabra clave: encuentro elseincreíblemente poco nemónica para esta semántica. Mi pregunta no es "por qué se usa esta palabra clave para este propósito" (que probablemente votaría para cerrar, aunque solo después de leer las respuestas y comentarios), sino cómo puedo pensar en la elsepalabra clave para que su semántica tenga sentido, y yo por lo tanto puede recordarlo?
Estoy seguro de que hubo una buena cantidad de discusión sobre esto, y puedo imaginar que la elección se hizo por coherencia con la cláusula de la trydeclaración else:(que también tengo que buscar), y con el objetivo de no agregar a la lista de Las palabras reservadas de Python. Quizás las razones para elegir elseaclararán su función y la harán más memorable, pero busco conectar el nombre con la función, no después de una explicación histórica per se.
Las respuestas a esta pregunta , que mi pregunta se cerró brevemente como un duplicado, contienen muchas historias interesantes. Mi pregunta tiene un enfoque diferente (cómo conectar la semántica específica de elsecon la elección de la palabra clave), pero creo que debería haber un enlace a esta pregunta en alguna parte.
elsemedios, básicamente, "si la condición de continuidad falla". En un bucle for tradicional, la condición de continuación es típicamente i < 42, en cuyo caso, puede ver esa parte comoif i < 42; execute the loop body; else; do that other thing
break. El caso de uso canónico es cuando el bucle busca algo y se rompe cuando lo encuentra. El elsese ejecuta solo si no se encuentra nada.