Molti programmatori Python probabilmente non sono consapevoli del fatto che la sintassi dei whileloop e dei forloop include una else:clausola opzionale :
for val in iterable:
do_something(val)
else:
clean_up()
Il corpo della elseclausola è un buon posto per alcuni tipi di azioni di pulizia, ed è eseguito al termine normale del ciclo: Cioè, uscendo dal ciclo con returno breaksalta la elseclausola; uscire dopo continueaverlo eseguito. Lo so solo perché l'ho appena cercato (ancora una volta), perché non riesco mai a ricordare quandoelse viene eseguita la clausola.
Sempre? Su "fallimento" del loop, come suggerisce il nome? In caso di risoluzione regolare? Anche se il ciclo viene chiuso con return? Non posso mai essere del tutto sicuro senza cercarlo.
Incolpo la mia incertezza persistente sulla scelta della parola chiave: trovo elseincredibilmente poco mnemonico per questa semantica. La mia domanda non è "perché questa parola chiave viene utilizzata per questo scopo" (che probabilmente voterei per chiudere, anche se solo dopo aver letto le risposte e i commenti), ma come posso pensare alla elseparola chiave in modo che la sua semantica abbia senso, e io può quindi ricordarlo?
Sono sicuro che ci sia stata una buona dose di discussione su questo, e posso immaginare che la scelta sia stata fatta per coerenza con la clausola trydella dichiarazione else:(che devo anche cercare) e con l'obiettivo di non aggiungere all'elenco di Le parole riservate di Python. Forse i motivi della scelta elsechiariranno la sua funzione e la renderanno più memorabile, ma dopo aver collegato il nome alla funzione, non dopo una spiegazione storica in sé.
Le risposte a questa domanda , di cui la mia domanda è stata brevemente chiusa in duplice copia, contengono molte storie retrostanti interessanti. La mia domanda ha un focus diverso (come collegare la semantica specifica della elsescelta della parola chiave), ma ritengo che ci dovrebbe essere un collegamento a questa domanda da qualche parte.
elsemezzi fondamentalmente, "se la condizione di continuazione fallisce". In un ciclo for tradizionale, la condizione di continuazione è in genere i < 42, nel qual caso è possibile visualizzare quella parte comeif i < 42; execute the loop body; else; do that other thing
break. Il caso d'uso canonico è quando il ciclo cerca qualcosa e si interrompe quando lo trova. L' elseviene eseguito solo se non viene trovato nulla.