【问题标题】:Python: 'break' outside loopPython:“中断”外循环
【发布时间】:2011-01-28 14:04:54
【问题描述】:

在以下python代码中:

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

我明白了:

SyntaxError: 'break' outside loop

为什么?

【问题讨论】:

标签: python


【解决方案1】:

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

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

【讨论】:

  • 我该怎么做才能让脚本停在这里?
  • sys.exit() 立即终止程序。
  • raise SystemExit 终止程序; sys.exit() 提出它,如果你更喜欢函数调用。
  • 我猜return是OP的意图
【解决方案2】:

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

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

如果break 终止了if 块而不是终止循环,那么break 将毫无用处——有条件地终止循环正是break 的用途。

【讨论】:

  • 你的最后一句话是否等同于“A break 只能在循环内直接使用。”?
  • @Quetzalcoatl 我不这么认为。 “直接”是什么意思?
  • 循环中的中断,该中断不在条件下。您响应中的代码是 break 不是“直接”在循环中的情况 - 它位于条件内部。不知何故,我的最后一句话在语法上不清楚:-)
  • @Quetzalcoatl 我改写了——我想说你永远不会将break 直接放在循环中。你总是把它放在循环中的if 中。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    因为 break 语句旨在跳出循环。您不需要跳出 if 语句 - 它只在最后结束。

    【讨论】:

      【解决方案5】:

      这是一个老问题,但如果你想打破 if 语句,你可以这样做:

      while 1:
          if blah:
              break
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-24
        • 1970-01-01
        • 2017-07-31
        • 1970-01-01
        • 2014-03-22
        • 2015-03-07
        • 2019-08-26
        • 1970-01-01
        相关资源
        最近更新 更多