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を返すことはありませんか?または、breakステートメントが必要ですか?

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

また。The

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 に答える