是否需要 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; goto 区别用法