是否需要 break 语句或 return 语句是否足够?

Posted

技术标签:

【中文标题】是否需要 break 语句或 return 语句是否足够?【英文标题】:Is a break statement required or is the return statement enough? 【发布时间】:2016-12-05 03:46:46 【问题描述】:

在我的 Python 3(.5) 脚本中,我有一个简单的 for 循环,如下所示:

request = "simple string"
ignore = (
  # Tuple that contains regex's to ignore
)
for (i, regex) in enumerate(ignore):
  if re.search(regex, request):
    print("Found regex 0.".format(i))
    return False

现在,这按预期工作,循环在找到的第一个匹配项处停止。 我知道 break 语句是用来打破 Python 中的循环的。 知道这会导致问题:必须我使用break 语句来中断循环,或者我可以使用return 语句来代替吗?

记住这个问题,让我的代码看起来像这样会更好吗:

request = "simple string"
ignore = (
  # Tuple that contains regex's to ignore
)
for (i, regex) in enumerate(ignore):
  if re.search(regex, request):
    print("Found regex 0.".format(i))
    break

【问题讨论】:

【参考方案1】:

return 立即退出函数。

如果您处于循环中,则将跳出循环,并且首先不需要break

所以不,如果return 适合您的需求,您不需要使用break

【讨论】:

如果他只是在函数中使用return,函数将返回None。但是如果他不使用返回函数将是无效的。如果我不想使用函数的输出,我更喜欢使用 break。 @MartijnPieters 请务必记住,如果要返回的表达式抛出异常,return 将不会退出函数。例如,您可以将返回值放入 try 块中并在不离开函数的情况下捕获异常。所以它并不总是立即退出函数。 @ihsancemil:在 Python 中没有 void 这样的东西。当您不使用显式 return 时,默认返回 None @PeterNimroot:这是一个边缘情况,然后 exception 退出块。 @MartijnPieters 正如我所说,您可以捕获一个异常并决定简单地 pass 它或用它做任何您想做的事情 - 例如 try: return 1 / 0; except: pass。此外,我不会将其完全称为边缘案例,我已经看到这种技术在一些低级项目中不是一次或两次有用。

以上是关于是否需要 break 语句或 return 语句是否足够?的主要内容,如果未能解决你的问题,请参考以下文章

break continue return

跳转语句 break;continue; return; goto 区别用法

c#switch语句是return适合替换break

最后在python中try子句的break,continue,return语句之前阻止执行

return及break区别

js中的break ,continue, return