De nombreux programmeurs Python ignorent probablement que la syntaxe des whileboucles et des forboucles comprend une else:clause facultative :
for val in iterable:
do_something(val)
else:
clean_up()
Le corps de la elseclause est un bon endroit pour certains types d'actions de nettoyage et est exécuté à la fin normale de la boucle: c'est-à-dire, quitter la boucle avec returnou breaksauter la elseclause; quitter après une continueexécution. Je le sais uniquement parce que je viens de le chercher (encore une fois), parce que je ne me souviens jamais quand la elseclause est exécutée.
Toujours? Sur «échec» de la boucle, comme son nom l'indique? En cas de résiliation régulière? Même si la boucle est sortie avec return? Je ne peux jamais être entièrement sûr sans le chercher.
Je blâme mon incertitude persistante sur le choix du mot-clé: je trouve elseincroyablement démnémonique pour cette sémantique. Ma question n'est pas "pourquoi ce mot-clé est-il utilisé à cette fin?" (Que je voterais probablement pour fermer, mais seulement après avoir lu les réponses et les commentaires), mais comment puis-je penser au elsemot - clé pour que sa sémantique ait un sens, et je peut donc s'en souvenir?
Je suis sûr qu'il y a eu beaucoup de discussions à ce sujet, et je peux imaginer que le choix a été fait par souci de cohérence avec la clause de la trydéclaration else:(que je dois également consulter), et dans le but de ne pas ajouter à la liste des Les mots réservés de Python. Peut-être que les raisons du choix elseclarifieront sa fonction et la rendront plus mémorable, mais je suis après avoir connecté le nom à la fonction, pas après une explication historique en soi.
Les réponses à cette question , dont ma question a été brièvement clôturée comme un double, contiennent beaucoup d'histoire intéressante. Ma question a un objectif différent (comment relier la sémantique spécifique de elseavec le choix du mot clé), mais je pense qu'il devrait y avoir un lien vers cette question quelque part.
elsesignifie essentiellement "si la condition de continuation échoue". Dans une boucle for traditionnelle, la condition de continuation est généralement i < 42, dans ce cas, vous pouvez voir cette partie commeif i < 42; execute the loop body; else; do that other thing
break. Le cas d'utilisation canonique est celui où la boucle recherche quelque chose et se rompt lorsqu'elle le trouve. Le elsen'est exécuté que si rien n'est trouvé.