Pourquoi Python n'a-t-il pas de boucle "do while" comme beaucoup d'autres langages de programmation, comme C?
Exemple: Dans le C, nous avons une boucle while comme ci-dessous:
do {
statement(s);
} while( condition );
Il n'y a pas do...while
boucle car il n'y a pas de moyen sympa d'en définir une qui rentre dans le statement: indented block
modèle utilisé par tous les autres Python instruction composée. En tant que telles propositions pour ajouter une telle syntaxe ne sont jamais parvenues à un accord.
Il n'y a pas non plus vraiment besoin d'avoir une telle construction, pas quand vous pouvez simplement faire:
while True:
# statement(s)
if not condition:
break
et ont exactement le même effet qu'un C do { .. } while condition
boucle.
Voir PEP 315 - Enhanced While Loop :
Rejeté [...] car aucune syntaxe n'est apparue qui pourrait rivaliser avec la forme suivante:
while True: <setup code> if not <condition>: break <loop body>
Une alternative de syntaxe à celle proposée dans le PEP a été trouvée pour une boucle do-while de base, mais elle a obtenu peu de soutien car la condition était au sommet:
do ... while <cond>: <loop body>
ou, comme Guido van Rossum l'a dit :
Veuillez rejeter le PEP. Plus de variations dans ce sens ne rendront pas la langue plus élégante ou plus facile à apprendre. Ils sauveraient juste quelques personnes hâtives de la frappe tout en incitant ceux qui doivent lire/maintenir leur code à se demander ce que cela signifie.