Es probable que muchos programadores de Python ignoren que la sintaxis de los while
bucles y for
bucles incluye una else:
cláusula opcional :
for val in iterable:
do_something(val)
else:
clean_up()
El cuerpo de la else
clá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 return
u break
omitir la else
cláusula; saliendo después de que un lo continue
ejecuta. 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 else
increí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 else
palabra 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 try
declaració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 else
aclarará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 else
con la elección de la palabra clave), pero creo que debería haber un enlace a esta pregunta en alguna parte.
else
medios, 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 else
se ejecuta solo si no se encuentra nada.