【问题标题】:Is a break statement required or is the return statement enough?是否需要 break 语句或 return 语句是否足够?
【发布时间】: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

【问题讨论】:

    标签: python python-3.x for-loop return 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。此外,我不会将其完全称为边缘案例,我已经看到这种技术在一些低级项目中不是一次或两次有用。
    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 2013-12-18
    • 2014-10-15
    • 2016-07-20
    • 2012-06-21
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多