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

War es hilfreich?

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

umschreiben
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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top