이 행동은 어떻게 충족 될 수 있습니까? 파이썬 "단락"테스트
-
06-07-2019 - |
문제
다음 코드가 있습니다.
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)
제휴하지 않습니다 StackOverflow