Python return 문이 for 루프를 중단하지 않습니다.
Sep 15 2020
XML 구조를 반복하고 싶습니다. 내 코드가 작동하는 것 같습니다. 디버거를 확인하고에 도달했음을 확인 return했지만 for루프가 계속됩니다.
귀하의 조언을 기대합니다. 감사합니다!
def get_value(root, item):
for node in root:
if node.tag == item:
return node.tag
else:
get_value(node, item)
return 'Item not found in XML'
답변
3 Homer Sep 15 2020 at 21:28
여기서 문제는 동일한 함수 is else 문을 호출한다는 것입니다. 따라서 else 블록에 들어가면 재귀 적으로 진행될 수 있습니다. 내부에서 함수를 호출하지 않도록 코드를 수정하십시오. 또한 아래에 강조 표시된 for 루프 내부에 return을 배치해야 할 수도 있습니다.
def get_value(root, item):
for node in root:
if node.tag == item:
return node.tag
else:
get_value(node, item) ---> This is the problem
return 'Item not found in XML'
3 DevCl9 Sep 15 2020 at 21:43
return재귀 호출을 시작할 때 바로 진술을 잊어 버렸습니다 . 즉, 최대 재귀 한계에 도달하거나 메모리가 부족할 때까지 영원히 계속됩니다.
다음과 같이 코드를 변경하십시오.
def get_value(root, item):
for node in root:
if node.tag == item:
return node.tag
else:
return get_value(node, item)
return 'Item not found in XML'