python loops do-while

¿Por qué no hay un bucle mientras que en Python



loops do-while (1)

¿Por qué Python no tiene un bucle ''hacer mientras'' como muchos otros lenguajes de programación, como C?

Ejemplo: En la C tenemos el bucle while mientras que abajo:

do { statement(s); } while( condition );


No hay un bucle do...while while porque no hay una buena forma de definir uno que se ajuste a la statement: indented block patrón de statement: indented block utilizado por todas las demás declaraciones compuestas de Python. Como tales propuestas para agregar tal sintaxis nunca han llegado a un acuerdo.

Tampoco es realmente necesario tener tal construcción, no cuando simplemente puedes hacer:

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

y tiene exactamente el mismo efecto que una C do { .. } while condition bucle de do { .. } while condition .

Ver python.org/dev/peps/pep-0315 :

Rechazado porque no surgió una sintaxis que pudiera competir con la siguiente forma:

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

Se encontró una alternativa de sintaxis a la propuesta en el PEP para un ciclo básico de "do-while" pero obtuvo poco apoyo porque la condición estaba en la parte superior:

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

o, como lo dijo Guido van Rossum :

Por favor rechace el PEP. Más variaciones a lo largo de estas líneas no harán que el lenguaje sea más elegante o más fácil de aprender. Acababan de ahorrar a algunas personas apresuradas algo de escritura, mientras que otros que tienen que leer / mantener su código se preguntan qué significa.