Die Python-Rückgabeanweisung wird nicht für die Schleife unterbrochen
Ich möchte eine XML-Struktur durchlaufen. Mein Code scheint zu funktionieren. Ich habe den Debugger überprüft und festgestellt, dass er den erreicht hat return, aber die forSchleife wird fortgesetzt.
Ich freue mich auf Ihren Rat, danke!
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'
Antworten
Hier ist das Problem, dass Sie dieselbe Funktion aufrufen. Wenn es also in den else-Block eingeht, wird es möglicherweise rekursiv fortgesetzt. Versuchen Sie, Ihren Code zu ändern, und vermeiden Sie es, die Funktion von innen aufzurufen. Möglicherweise müssen Sie auch die Rückgabe innerhalb der for-Schleife platzieren, die unten hervorgehoben ist
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'
Sie haben eine returnAnweisung direkt beim Starten von Rekursionsaufrufen vergessen . Dies bedeutet, dass es für immer weitergehen würde, bis das maximale Wiederholungslimit erreicht ist oder der Speicherplatz knapp wird.
Ändern Sie Ihren Code so
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'