web-dev-qa-db-ja.com

pythonでdo whileループがない理由

なぜPython Cのような他の多くのプログラミング言語のような 'do while'ループがないのですか?

例:Cでは、whileループを次のようにします。

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

他のすべてのPythonで使用されるdo...whileパターンに適合するループを定義する良い方法がないため、statement: indented blockループはありません。 _複合ステートメント。このような構文を追加するという提案が合意に達することはありません。

また、このような構成を必要とする必要性もありません。

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

c do { .. } while conditionループとまったく同じ効果があります。

PEP 315-Enhanced While Loop を参照してください:

次の形式と競合する可能性のある構文が出現しなかったため、拒否されました[...]:

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

PEPで提案されている構文の代替構文は、基本的なdo-whileループで見つかりましたが、条件が最上位にあるため、ほとんどサポートされませんでした。

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

または、 Guido van Rossumが言ったように

PEPを拒否してください。これらの線に沿ってバリエーションを増やしても、言語がよりエレガントになったり学習しやすくなったりすることはありません。彼らはコードを読んだり保守したりする必要のある他の人にそれが何を意味するのかと思わせながら、数人の性急な人をタイプすることを省くだけでした。

53
Martijn Pieters