Python: ‘breek’ buitenlus

in de volgende pythoncode:

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

Ik krijg:

SyntaxError: 'break' outside loop

Waarom?


Antwoord 1, autoriteit 100%

Omdat break niet kan worden gebruikt om uit een if te breken – het kan alleen uit lussen breken. Dat is de manier waarop Python (en de meeste andere talen) zich moeten gedragen.

Wat probeer je te doen? Misschien moet je in plaats daarvan sys.exit()of returngebruiken?


Antwoord 2, autoriteit 6%

breakbreekt uit een lus, niet een if-statement, zoals anderen al hebben opgemerkt. De motivatie hiervoor is niet zo moeilijk te zien; denk aan code zoals

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

De breakzou behoorlijk nutteloos zijn als het het if-blok zou beëindigen in plaats van de lus te beëindigen — het voorwaardelijk beëindigen van een lus is precies wat breakwordt gebruikt voor.


Antwoord 3, autoriteit 5%

Omdat pauze alleen in een lus kan worden gebruikt.
Het wordt gebruikt om uit een lus te breken (de lus te stoppen).


Antwoord 4, autoriteit 4%

Omdat de break-instructie bedoeld is om uit lussen te breken. Je hoeft niet uit een if-statement te komen – het eindigt gewoon aan het einde.


Antwoord 5

Dit is een oude vraag, maar als je uit een if-statement wilt komen, kun je het volgende doen:

while 1:
    if blah:
        break

Other episodes