2010-03-17 20 views
17

nel seguente codice Python:Python: 'break' anello esterno

narg=len(sys.argv) 
print "@length arg= ", narg 
if narg == 1: 
     print "@Usage: input_filename nelements nintervals" 
     break 

ottengo:

SyntaxError: 'break' outside loop 

Perché?

+2

Cosa pensi che 'break' faccia qui? Cosa ti aspetti che accada? –

+2

Il modulo optparse (o simile) renderà l'analisi molto più semplice. http://docs.python.org/library/optparse.html –

risposta

39

Perché la pausa non può essere utilizzata per uscire da un if - può solo uscire da loop. Questo è il modo in cui Python (e la maggior parte delle altre lingue) viene specificato per comportarsi.

Che cosa stai cercando di fare? Forse dovresti usare o return?

+1

e come posso fare in modo che gli script si fermino qui? – flow

+5

'sys.exit()' termina immediatamente il programma. –

+1

'raise SystemExit' termina il programma; 'sys.exit()' lo solleva, se preferisci una chiamata di funzione. – tzot

2

Poiché l'istruzione di interruzione è destinata a interrompere i cicli. Non hai bisogno di uscire da una dichiarazione if: termina alla fine.

2

Poiché la pausa può essere utilizzata solo all'interno di un loop. Viene utilizzato per interrompere un ciclo (interrompere il ciclo).

0

break interruzioni di un ciclo, non un'istruzione if, come altri hanno sottolineato. La motivazione per questo non è troppo difficile da vedere; pensare codice come

for item in some_iterable: 
    ... 
    if break_condition(): 
     break 

Il break sarebbe abbastanza inutile se terminato il blocco if anziché interrompere il loop. Considera che non riesco a pensare a un caso che potresti usare in qualche modo, ma all'interno di un'istruzione if per rompere il ciclo se l'affermazione è in.