2010-03-17 13 views
17

en el siguiente código Python:Python: 'break' rizo exterior

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

me sale:

SyntaxError: 'break' outside loop 

¿Por qué?

+2

¿Qué opinas 'break' hace aquí? ¿Qué esperas que pase? –

+2

El módulo optparse (o similar) hará que el análisis argv sea mucho más simple. http://docs.python.org/library/optparse.html –

Respuesta

39

Debido ruptura no se puede utilizar para salir de un caso - que sólo puede salir de bucles. Esa es la forma en que Python (y la mayoría de los otros idiomas) se especifican para comportarse.

¿Qué estás tratando de hacer? ¿Tal vez debería usar sys.exit() o return en su lugar?

+1

y ¿cómo podría hacer para que los scripts se detengan aquí? – flow

+5

'sys.exit()' termina el programa inmediatamente. –

+1

'raise SystemExit' finaliza el programa; 'sys.exit()' lo plantea, si prefiere una llamada a función. – tzot

2

Porque la declaración de interrupción está destinada a salir de los bucles. No es necesario que salga de una declaración if, simplemente termina al final.

2

Porque el descanso solo se puede usar dentro de un bucle. Se usa para salir de un bucle (detener el ciclo).

0

break se rompe un ciclo, no una declaración if, como han señalado otros. La motivación para esto no es muy difícil de ver; pensar en un código como

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

El break sería bastante inútil si finalizado el bloque if en lugar de interrumpir el circuito. Considere que no puedo pensar en un caso que tendrá que utilizar romper cualquier manera, pero dentro de una sentencia if para romper el bucle si la declaración está en.