문제

다음 코드가 있습니다.

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를 반환하지 않습니까? 아니면 브레이크 진술이 필요합니까?

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")

다른 팁

위의 코드에서 브레이크 키워드가 필요하지 않습니다. 사실, 당신은 필요하지 않습니다

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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top