현재 XML (SVG)을 탐색하고 다음 문제가 있습니다.
내 함수는 항상 if currNode.parentNode is rootNode:
이후에 없음을 반환합니다. 아래 코드는 비어 있지 않은 문자열 인 'flag'에 대한 반환을 명시 적으로 설정했습니다.
여기에서 가장 흥미로운 부분은 print('...')
이 3 개의 점을 인쇄하므로 문제가 정확히 존재한다는 것입니다 (또는 적어도 그렇게 보입니다).'반환'없음 '없음'표현 목록이 '없음'을 반환합니다.
파이썬 문서에 따르면 '표현식 목록이있는 경우 평가되고 그렇지 않으면 없음으로 대체됩니다.'
즉, 질문은 다음과 같습니다.
왜 'return'은 'flag'문자열을 반환하지 않고 'None'을 반환합니까? 업체에 따르면, 하나의 설명이
def relsLookup(currNode, rootNode):
if currNode.nextSibling is not None:
currNode = currNode.nextSibling
return currNode
elif currNode.nextSibling is None:
if currNode.parentNode is rootNode:
flag = 's2s_exception_end_of_svg'
print('...')
return flag
elif currNode.parentNode.localName == 'g':
if currNode.parentNode.nextSibling is not None:
print('<--')
currNode = currNode.parentNode.nextSibling
return currNode
elif currNode.parentNode.nextSibling is None:
print('<--')
currNode = currNode.parentNode
relsLookup(currNode, rootNode)
else:
flag = 's2s_exception_unknown_parent'
return flag
else:
flag = 's2s_exception_unknown_sibling'
return flag
'currNode.parentNode가 rootNode가 아닌 경우'? 그 때 무엇? 아니면'currNode.nextSibling이 None'이 아닌가? 그러면 어떻게됩니까? –
전체 기능을 게시 할 수 있습니까? 중요한 부분은이 'if'블록이 입력되지 않으면 어떻게되는지입니다. –
마지막 세 줄은 죽은 코드입니다. 값은 없음 또는 없음이며 세 번째 가능성은 없습니다. '무언가가없는 경우에 쓰십시오 : ... else : ... ' –