web-dev-qa-db-fra.com

Pourquoi il n'y a pas de boucle do while dans python

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 );
29
Bahubali Patil

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.

53
Martijn Pieters