0

我有以下代码:

def testGeodatabase(self):
    geodatabaseList = self.gp.ListWorkspaces("*","ALL")
    for x in geodatabaseList:
        if x == self.outputGeodatabase:
            return True
        else:
            pass
    return False

我需要知道以下几点:如果 if 条件评估为 true,该函数是否会停止在列表中查找并且永远不会返回 False?还是我需要一个中断声明?

def testGeodatabase(self):
    geodatabaseList = self.gp.ListWorkspaces("*","ALL")
    for x in geodatabaseList:
        if x == self.outputGeodatabase:
            return True
            break
        else:
            pass
    return False

如果以下代码不能解决我的问题,我可以用什么来模拟该行为?

谢谢

4

4 回答 4

8

return是该行的结尾,之后该函数中不会发生任何其他事情。另一方面,您可以将函数重写为

def testGeodatabase(self):
    return self.outputGeodatabase in self.gp.ListWorkspaces("*","ALL")
于 2009-10-26T17:54:48.637 回答
2

您不需要上述代码中的 break 关键字。其实你不需要

else:
   pass

任何一个。这

return True

将退出该功能。

于 2009-10-26T17:56:06.217 回答
1

return语句确实会导致该函数在此时退出。该函数中不再执行任何代码。

这是一个简单的测试,您可以运行它来证明这一点:

def someFunction(nums):
    for i in nums:
        if i == 1:
            return "Found 1!"
    return "Never found 1"

并运行它:

>>> someFunction([2])  
'Never found 1'  
>>> someFunction([2,1,3])  
'Found 1!'  
于 2009-10-26T17:54:29.900 回答
0

我认为使用any()是最好的选择:

def testGeodatabase(self):
    geodatabaseList = self.gp.ListWorkspaces("*","ALL")
    return any(x == self.outputGeodatabase for x in geodatabaseList)
于 2009-10-26T18:26:54.063 回答