以下是一个例子:
def getNumber3(arg):
if arg!=7:
print 'arg!=7'
return
return 7
def getNumber5(arg):
if arg!=5:
print 'getNumber5(): arg!=5'
return
number7=getNumber3(7)
if not number7:
print 'getNumber5(): not number7'
return
return '%s-%s'%(arg,number7)
def getNumber():
number5=getNumber5(5)
if number5:
return 'The number is: %s'%number5
print getNumber()
函数getNumber5()
期待来自getNumber3()
的返回值将返回None
并打印"错误"如果传入的参数号不是7,则显示消息。
功能getNumber5()
如果收到None
(来自函数getNumber3
)会投诉并返回“无”#39}太
因此,两个函数:getNumber5()
和getNumber3()
都在抱怨并返回None
。
问题:如何安排此功能工作流程,以便第一个功能getNumber
(启动它全部)只要' getNumber3()'函数返回无绕过getNumber5()'. So
getNumber5()'函数不必抱怨并返回自己的无。
答案 0 :(得分:2)
您可以使用异常处理立即跳回getNumber()
。
class NoNumberException(Exception):
pass
def getNumber3(arg):
if arg!=7:
print 'arg!=7'
raise NoNumberException
return 7
def getNumber5(arg):
if arg!=5:
print 'getNumber5(): arg!=5'
return
number7=getNumber3(7)
if not number7:
print 'getNumber5(): not number7'
return
return '%s-%s'%(arg,number7)
def getNumber():
try:
number5=getNumber5(5)
if number5:
return 'The number is: %s'%number5
except NoNumberException:
return "None value encountered in getNumber3()"
print getNumber()