python类方法中的双返回
当我调用下面的方法时,会执行两个返回,我不知道为什么python类方法中的双返回,python,return-value,Python,Return Value,当我调用下面的方法时,会执行两个返回,我不知道为什么 def Build(self, name = None): if self.buildData: try: installData = self.buildData.Build(name) return BuildResult(True, installData) except: pass else: Log
def Build(self, name = None):
if self.buildData:
try:
installData = self.buildData.Build(name)
return BuildResult(True, installData)
except:
pass
else:
Log("Application has no <build> data")
return BuildResult(False, None)
结果是:
使用有效字符串(如abc)调用该方法
调用self.buildData.Buildname并运行BuildResultTrue、installData构造函数
最后一个return语句也会执行
好吧,我猜BuildResult失败了,异常被传递,您进入第二次返回。您只需在except中添加一些调试打印即可轻松测试它。永远不要让异常保持沉默:当返回BuildResultTrue时,执行installData BuildResultTrue,首先计算installData。我的猜测是,这个函数会引发一个异常,该异常被捕获并传递。在返回BuildResultFalse之后,将不执行任何操作 您应该看到引发了什么异常,并正确处理它 我将重写函数如下:
def Build(self, name = None):
if self.buildData:
try:
installData = self.buildData.Build(name)
except: # TODO: catch only expected exception
pass
return BuildResult(True, installData)
else:
Log("Application has no <build> data")
return BuildResult(False, None)
请修复except:子句以打印实际引发的异常。这将帮助您了解正在发生的事情。什么是self.buildData?您确定它不是对父类的引用吗?