需要使用break语句吗,还是仅仅使用return语句就足够了?

4
在我的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

现在,这个代码按预期工作,并且循环会在找到第一个匹配项时停止。
我知道在Python中使用break语句可以退出循环。
鉴于此,我的问题是:我必须使用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个回答

11

return语句会立即退出函数。

如果您正在使用循环,return语句将会跳出循环,不需要先使用break语句。

因此,如果return满足您的需求,则无需使用break语句。


如果他在函数中只使用return,则函数将返回None。但是,如果他不使用return,则函数将是void类型。如果我不想使用函数的输出,我更喜欢使用break。 - ihsancemil
1
重要的是要记住,如果要返回的表达式引发异常,return 语句将不会退出函数。例如,您可以将 return 语句放入 try 块中,并捕获异常而不离开函数。因此,它并不总是立即退出函数。 - Peter Nimroot
@PeterNimroot:那是一个边缘情况,而异常会退出该块。 - Martijn Pieters
1
正如我所说的,您可以捕获异常并决定简单地pass它或者对其进行任何想要的操作 - 比如 try: return 1 / 0; except: pass。此外,我不会完全称它为边缘情况,我曾在一些低级项目中多次看到这种技术非常有用。 - Peter Nimroot
@PeterNimroot:这仍然不能消除你需要在return可行时使用break的情况。当然,你可以通过异常来改变流程,然后用try捕获。你可以在except处理程序中使用return,并在finally处理程序中引发异常以进行更奇怪的交互,但这些都与本文无关。 - Martijn Pieters
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接