如何防止函数在Python中的return语句后继续

时间:2014-10-26 21:43:55

标签: python

我正在尝试创建一个检查值是否有效的函数。然后将此函数放入另一个函数中以检查函数的其余部分是否应该继续。我的想法基本上是这样的:

def test(value):
    if value == 5:
        return "Don't Continue"

def go(number):
    test(number)
    print('Here')
    return 'Yes'
    print('Now here')

go(5) # Returns "Don't Continue", 'Here'

test函数返回一个值时,为什么函数不退出执行,并且,有没有办法在没有多行的情况下创建这种类型的测试,否则会出现这种情况?

3 个答案:

答案 0 :(得分:3)

  

为什么函数在测试函数返回时不退出执行   值

因为return语句只适用于它所在的函数,而不适用于调用函数的函数。

你想要这样的东西

def test(value):
    if value == 5:
        return False
    return True
    # these 3 lines can be shortened to: return value == 5

def go(number):
    if test(number): # test(value) returned True
        print('Test succeeded')
        return
    print('Test failed')

go(5) # will print 'Test failed'
  

有没有办法在没有多线的情况下创建这种类型的测试,如果,   其他情况?

如果您要检查多个值,可以这样做

def test(value):
    # will return False if value is either 3 5 or 7
    if value in [3, 5, 7]:
        return False
    return True
但是,逻辑有点过时了。如果测试通过则最好返回True,如果没有则返回False。

答案 1 :(得分:1)

如果您的程序可能需要多个路径,并且您希望避免使用多个if语句,那么可以使用以下方法:

def test(value):
    return value == 5


def passed():
    return 'Passed'


def failed():
    return 'Failed'


def router(value):
    routes = {
        True: passed,
        False: failed,
    }
    result = test(value)
    return routes[result]


def main(value):
    route = router(value)
    return route()


if __name__ == '__main__':
    print(main(5))
    print(main(4))

答案 2 :(得分:0)

return表示从当前函数返回。因此调用另一个返回的方法不会从调用它的方法返回。

您可以在test方法中引发异常。这将停止执行。

或者您可以将go更改为:

if test(number):
    return

所以它会根据调用test的结果停止该方法。