Pergunta

Eu tenho o seguinte código:

def testGeodatabase(self):
    geodatabaseList = self.gp.ListWorkspaces("*","ALL")
    for x in geodatabaseList:
        if x == self.outputGeodatabase:
            return True
        else:
            pass
    return False

O que eu preciso saber o seguinte: no caso de as Se a condição for avaliada como True, será a paragem da função procura na lista e nunca mais voltar Falso? Ou eu preciso uma instrução break?

def testGeodatabase(self):
    geodatabaseList = self.gp.ListWorkspaces("*","ALL")
    for x in geodatabaseList:
        if x == self.outputGeodatabase:
            return True
            break
        else:
            pass
    return False

Se o código a seguir não resolve o meu problema, o que posso usar para fazer simular esse comportamento?

Graças

Foi útil?

Solução

return é o fim da linha, e nada mais vai acontecer nessa função depois. Por outro lado, você poderia reescrever sua função como

def testGeodatabase(self):
    return self.outputGeodatabase in self.gp.ListWorkspaces("*","ALL")

Outras dicas

Você não precisa de uma palavra-chave quebra no código acima. Na verdade, você não precisa o

else:
   pass

quer. A

return True

irá sair da função.

A declaração return vai realmente fazer com que a função para ser encerrado nesse ponto. Nenhum código adicional é executado na função.

Aqui é um teste simples que você pode executar para provar o ponto:

def someFunction(nums):
    for i in nums:
        if i == 1:
            return "Found 1!"
    return "Never found 1"

E executá-lo:

>>> someFunction([2])  
'Never found 1'  
>>> someFunction([2,1,3])  
'Found 1!'  

Eu acho que o uso de any() é a melhor escolha:

def testGeodatabase(self):
    geodatabaseList = self.gp.ListWorkspaces("*","ALL")
    return any(x == self.outputGeodatabase for x in geodatabaseList)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top