2010-02-03 3 views
16

¿Hay alguna buena razón por la cual no hay una declaración de control de flujo en Python?¿Por qué no hay una declaración de control de flujo en python?

¿Por qué la gente tiene que escribir while y break explícitamente?

+1

"escribir mientras ... explícitamente"? ¿Qué significa esto? ¿Cómo '' while'' no escribe 'while' explícitamente? No entiendo esta parte de la pregunta. –

+1

¿Cuál es el motivo por el que es necesario saber esto? ¿Cómo este factoid lo ayuda a resolver cualquier problema de programación? –

+3

Es una muy buena pregunta y una fuente común de angustia para los nuevos usuarios de Python. –

Respuesta

11

Se ha propuesto en PEP 315 pero no se ha implementado porque nadie ha llegado con una sintaxis que es más claro que el while True con un interior if-break.

+1

¿Qué pasa con Do ... While True? – Mavrik

+3

Eche un vistazo a http://mail.python.org/pipermail/python-dev/2006-February/060718.html que está vinculado desde el PEP. Explica el problema con varias alternativas de sintaxis con un poco más de detalle. –

10

Probablemente porque Guido no pensó que fuera necesario. Hay un montón de declaraciones de control de flujo diferentes que podría apoyar, pero la mayoría de ellas son variantes entre sí. Francamente, he encontrado que la declaración do-while es una de las menos útiles.

+0

+1, casi siempre quiero mis condiciones en la parte superior. hace que el 'cero caso' sea mucho más limpio. – Javier

+14

Sí, probablemente GuiDO no creo que valga la penaWHILE –

+1

en Pascal siempre uso repeat-until (condición). En C++ utilizo do-while (condición) raramente. ¿Puedes explicar eso? :) –

2

Python agrega funciones solo cuando simplifican significativamente algún código.

while True: 
    ... 
    if not cond: break 

no es menos simple de un bucle do-while, para el que no hay sintaxis natural del pitón obvia de todos modos.

do: 
    ... 
    while cond 

(ve raro)

o el presente?

do: 
    ... 
while cond 

(La mientras que parece una sentencia while regular)

+3

'break's en un condicional en el medio del ciclo requiere más análisis de código que el análisis de una estructura explícita' do ... until ... '. Entonces, la lectura del código se simplificaría. En cuanto a la apariencia de "while cond", podría reemplazarse por un equivalente "until cond", que sería explícito. Supongo que hay buenas razones para no tener que hacer ... hasta la estructura de control, sin embargo; leer la discusión original probablemente sea útil. – EOL

3

Porque entonces tendría dos formas de hacer algo.

+3

Un ciclo do-while/repeat-until no es lo mismo que un ciclo while. El primero siempre se ejecutará al menos una vez, pero este último puede no ejecutarse en absoluto. – GreenMatt

+0

@GreenMatt, eso no es de lo que él está hablando. A continuación, tendrá 2 formas de repetir manualmente una condición. Las condiciones previas y posteriores no necesariamente difieren lo suficiente como para justificar la extensión de la sintaxis de Python. –

+0

@Matt Joiner: En primer lugar, no pretendo saber qué estaba pensando Austin cuando hizo esa entrada. Para dirigir su comentario: me doy cuenta de que el pensamiento es que Python no necesita la estructura extra de bucle. Solo estoy señalando la diferencia para que alguien que no sepa lo contrario piense que los dos mecanismos de bucle hacen exactamente lo mismo. – GreenMatt

Cuestiones relacionadas