Wie kann dieses Verhalten erreicht werden? Python „Kurzschlüsse“ test
-
06-07-2019 - |
Frage
Ich habe den folgenden Code:
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
for x in geodatabaseList:
if x == self.outputGeodatabase:
return True
else:
pass
return False
Was ich wissen müssen, um die folgende: falls die, wenn Bedingung true, stoppt die Funktion in der Liste suchen und nie falsch zurückgeben? Oder muss ich eine break-Anweisung?
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
for x in geodatabaseList:
if x == self.outputGeodatabase:
return True
break
else:
pass
return False
Wenn der folgende Code nicht mein Problem lösen, was ich dieses Verhalten simulieren tun können?
Danke
Lösung
return
ist das Ende der Linie, und nichts anderes wird in dieser Funktion später geschehen. Auf der anderen Seite, könnten Sie Ihre Funktion als
def testGeodatabase(self):
return self.outputGeodatabase in self.gp.ListWorkspaces("*","ALL")
Andere Tipps
Sie müssen nicht das Schlüsselwort break in dem obigen Code. Eigentlich brauchen Sie das nicht brauchen
else:
pass
entweder. Das
return True
wird die Funktion verlassen.
Die return
Aussage wird in der Tat dazu führen, die Funktion an diesem Punkt beendet werden. Kein weiterer Code wird in der Funktion ausgeführt wird.
Hier ist ein einfacher Test, die Sie auf den Punkt zu beweisen laufen können:
def someFunction(nums):
for i in nums:
if i == 1:
return "Found 1!"
return "Never found 1"
Und es läuft:
>>> someFunction([2])
'Never found 1'
>>> someFunction([2,1,3])
'Found 1!'
Ich denke, dass any()
verwendet, ist die beste Wahl:
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
return any(x == self.outputGeodatabase for x in geodatabaseList)