it-swarm.com.de

Warum gibt es keine do while-Schleife in python

Warum hat Python eine 'do while'-Schleife nicht wie viele andere Programmiersprachen wie C?

Beispiel: In der C haben wir eine while-Schleife wie folgt:

do {
   statement(s);
} while( condition );
29
Bahubali Patil

Es gibt keine do...while - Schleife, da es keine gute Möglichkeit gibt, eine zu definieren, die in das von verwendete statement: indented block - - Muster passt jede andere Python zusammengesetzte Anweisung. Als solche Vorschläge zum Hinzufügen einer solchen Syntax haben nie eine Einigung erzielt.

Es gibt auch keine Notwendigkeit , ein solches Konstrukt zu haben , nicht wenn Sie einfach tun können:

while True:
    # statement(s)
    if not condition:
        break

und haben genau den gleichen Effekt wie eine C do { .. } while condition - Schleife.

Siehe PEP 315 - Enhanced While Loop :

Abgelehnt, [...] weil keine Syntax auftauchte, die mit der folgenden Form konkurrieren könnte:

    while True:
        <setup code>
        if not <condition>:
            break
        <loop body>

Für eine einfache Do-While-Schleife wurde eine Syntaxalternative zu der im PEP vorgeschlagenen gefunden, die jedoch nur wenig Unterstützung erhielt, da die Bedingung ganz oben stand:

    do ... while <cond>:
        <loop body>

oder, wie Guido van Rossum es ausdrückte :

Bitte lehnen Sie das PEP ab. Mehr Variationen in dieser Richtung werden die Sprache nicht eleganter oder leichter zu lernen machen. Sie würden nur ein paar übereilten Leuten das Tippen ersparen, während andere, die ihren Code lesen/pflegen müssen, sich fragen, was das bedeutet.

53
Martijn Pieters