Python:在外部循环'打破'

Ope*_*way 27 python

在以下python代码中:

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

我明白了:

SyntaxError: 'break' outside loop
Run Code Online (Sandbox Code Playgroud)

为什么?

Mar*_*ers 56

因为break不能用于打破if - 它只能打破循环.这就是指定Python(和大多数其他语言)的行为方式.

你想做什么?也许你应该使用sys.exit()return代替?

  • `sys.exit()`立即终止程序. (6认同)
  • 我怎么能这样脚本就停在这里? (2认同)
  • `raise SystemExit`终止程序; 如果你喜欢函数调用,`sys.exit()`会引发它. (2认同)

Mik*_*ham 6

breakif正如其他人指出的那样,跳出一个循环,而不是一个语句。这样做的动机不难看出。想想像这样的代码

for item in some_iterable:
    ...
    if break_condition():
        break 
Run Code Online (Sandbox Code Playgroud)

break如果它终止了if块而不是终止循环,那将是非常无用的——有条件地终止循环正是所用的东西break


enr*_*cog 5

因为break只能用在循环内部。它用于跳出循环(停止循环)。