在函数结束(例如,检查失败)之前,在python中退出函数(没有返回值)的最佳方法是什么?


163

让我们假设一个迭代,其中我们调用一个没有返回值的函数。我认为我的程序应该表现的方式在以下伪代码中进行了解释:

for element in some_list:
    foo(element)

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return None
    do much much more...

如果我在python中实现此功能,则该函数返回一个None。是否有更好的方式“如果在函数主体中检查失败,则退出没有返回值的函数”?


6
如果您未明确返回某些内容,Python始终会返回None。但是您可以将“无”关闭。
基思

2
根据检查内容的不同,您可能还会raise遇到一个异常(或者,很少使函数返回True / False)
Rosh Oxymoron

Answers:


276

您可以简单地使用

return

与...完全相同

return None

None如果执行到达函数主体的末尾而没有命中return语句,则函数也将返回。不返回任何内容与None使用Python 返回相同。


return不起作用,如果我a = method()在我使用的方法中设置了return,它仍然保持在a后面运行代码。exit应该像php exit()一样,它会立即中断程序。
TomSawyer

2
@TomSawyer提早停止Python程序,如果要退出但报告成功或,import sys请先执行然后再执行。sys.exit()sys.exit("some error message to print to stderr")
鲍里斯(Boris)

@鲍里斯,这就是我想要的,对我有用。
米奇

17

我会建议:

def foo(element):
    do something
    if not check: return
    do more (because check was succesful)
    do much much more...

13

您可以使用return不带任何参数的语句退出函数

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return
    do much much more...

或引发异常,如果您想被告知该问题

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        raise Exception("cause of the problem")
    do much much more...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.