Python:';中断';外环

Python:';中断';外环,python,Python,在以下python代码中: narg=len(sys.argv) print "@length arg= ", narg if narg == 1: print "@Usage: input_filename nelements nintervals" break 我得到: SyntaxError: 'break' outside loop 为什么?因为break不能用于中断if-它只能中断循环。这就是Python(和大多数其他语言)的行为方式 你想干什么?也

在以下python代码中:

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

SyntaxError: 'break' outside loop

为什么?

因为break不能用于中断if-它只能中断循环。这就是Python(和大多数其他语言)的行为方式


你想干什么?也许您应该改用
sys.exit()
return

,因为break语句旨在中断循环。您不需要中断if语句,它只在末尾结束。

因为中断只能在循环中使用。
它用于中断循环(停止循环)。

break
中断循环,而不是其他人指出的
if
语句。这样做的动机并不难看出;像这样思考代码

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

如果
break
终止
if
块而不是终止循环,那么它将非常无用。
break
正是用于有条件地终止循环。

这是一个老问题,但是如果您想中断if语句,可以执行以下操作:

while 1:
    if blah:
        break

我怎样才能让脚本停在这里呢?
sys.exit()
立即终止程序。
raisesystemexit
终止程序
sys.exit()?您预计会发生什么?optparse模块(或类似模块)将使解析argv变得更加简单。你的最后一句话是否等同于“中断只能直接在循环中使用?”@quetzalcatl我不这么认为。“直接”是什么意思?循环中的一个中断,该中断不在某个条件下。您的响应中的代码是这样一种情况:break不是“直接”在循环中的——它在一个条件中。不知怎的,你的最后一句话在语法上我不太清楚:——)@quetzalcatl我重新措辞了——我想说的是,你永远不会把
break
直接放在一个循环中。你总是把它放在一个
if
循环中。