この動作はどのように達成できますか? Python“ショートサーキット#8221;テスト
-
06-07-2019 - |
質問
次のコードがあります:
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
次のコードで問題が解決しない場合、その動作をシミュレートするために何を使用できますか?
ありがとう
解決
return
は行の終わりであり、それ以降はその関数では何も起こりません。一方、関数を次のように書き換えることができます
def testGeodatabase(self):
return self.outputGeodatabase in self.gp.ListWorkspaces("*","ALL")
他のヒント
上記のコードではbreakキーワードは必要ありません。実際には、あなたは必要ありません
else:
pass
どちらか。
return True
関数を終了します。
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!'
any()
を使用するのが最良の選択だと思います:
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
return any(x == self.outputGeodatabase for x in geodatabaseList)
所属していません StackOverflow