我正在尝试创建一个检查值是否有效的函数。然后将此函数放入另一个函数中以检查函数的其余部分是否应该继续。我的想法基本上是这样的:
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
函数返回一个值时,为什么函数不退出执行,并且,有没有办法在没有多行的情况下创建这种类型的测试,否则会出现这种情况?
答案 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
的结果停止该方法。