2016-05-17 12 views
7

Perché Python non ha un ciclo "do while" come molti altri linguaggi di programmazione, come C?Python: Perché non esiste un ciclo while while in python

Esempio: In C dobbiamo fare mentre ciclo, come di seguito:

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

Stato * Rifiutato *: https://www.python.org/dev/peps/pep-0315/ –

+2

Possibile duplicato di [emulare un do-while in Python?] (Http: // StackOverflow. it/questions/743164/emulate-a-do-while-loop-in-python) – miradulo

+0

Re l'avviso di sospensione: Il collegamento fornito da Martijn non sembra molto basato sull'opinione pubblica: "Sforzi successivi per rilanciare il PEP nell'aprile 2009 no incontrare successo perché non è emersa alcuna sintassi che potesse competere ... " –

risposta

15

Non c'è do...while ciclo perché non esiste un modo piacevole per definire uno che si adatta nel modello statement: indented block usato da tutti gli altri Dichiarazione composta Python. Poiché tali proposte di aggiungere tale sintassi non hanno mai raggiunto un accordo.

Né v'è davvero alcun bisogno di avere un tale costrutto, non quando solo si può fare:

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

e hanno lo stesso effetto esattamente come C do { .. } while condition ciclo.

Vedi PEP 315 -- Enhanced While Loop:

Respinto [...] perché nessuno sintassi è emerso che potrebbe competere con la seguente forma:

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

Una sintassi alternativa a quella proposta nel PEP era trovato per un ciclo di do-while di base ma ha ottenuto poco supporto perché la condizione era nella parte superiore:

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

o, come Guido van Rossum put it:

Si prega di rifiutare la PEP. Altre variazioni lungo queste linee non renderanno la lingua più elegante o più facile da imparare. Avrebbero solo risparmiato un po 'frettolosamente gli utenti di digitando mentre gli altri che devono leggere/mantenere il loro codice si chiedono cosa significhi.