¿Cómo se puede lograr este comportamiento? Python & # 8220; cortocircuito # 8221; prueba
-
06-07-2019 - |
Pregunta
Tengo el siguiente código:
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
for x in geodatabaseList:
if x == self.outputGeodatabase:
return True
else:
pass
return False
Lo que necesito saber es lo siguiente: en caso de que la condición if se evalúe como verdadera, ¿la función dejará de buscar en la lista y nunca devolverá False? ¿O necesito una declaración de ruptura?
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
for x in geodatabaseList:
if x == self.outputGeodatabase:
return True
break
else:
pass
return False
Si el siguiente código no resuelve mi problema, ¿qué puedo usar para simular ese comportamiento?
Gracias
Solución
return
es el final de la línea, y nada más sucederá después en esa función. Por otro lado, podría reescribir su función como
def testGeodatabase(self):
return self.outputGeodatabase in self.gp.ListWorkspaces("*","ALL")
Otros consejos
No necesita la palabra clave break en el código anterior. En realidad, no necesitas el
else:
pass
tampoco. El
return True
saldrá de la función.
La instrucción return
hará que la función salga en ese punto. No se ejecuta más código en la función.
Aquí hay una prueba simple que puede ejecutar para probar el punto:
def someFunction(nums):
for i in nums:
if i == 1:
return "Found 1!"
return "Never found 1"
Y ejecutándolo:
>>> someFunction([2])
'Never found 1'
>>> someFunction([2,1,3])
'Found 1!'
Creo que usar any ()
es la mejor opción:
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
return any(x == self.outputGeodatabase for x in geodatabaseList)