L'instruction de retour Python ne rompt pas la boucle for
Je voudrais parcourir une structure XML. Mon code semble fonctionner. J'ai vérifié le débogueur et j'ai vu qu'il atteignait le return, mais la forboucle continue.
Dans l'attente de vos conseils, merci!
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'
Réponses
Ici, le problème est que vous appelez la même fonction que l'instruction else. Donc, s'il entre dans le bloc else, il peut continuer de manière récursive. Essayez de modifier votre code en évitant d'appeler la fonction de l'intérieur. En outre, vous devrez peut-être placer le retour à l'intérieur de la boucle for, mis en évidence ci-dessous
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'
Vous avez oublié une returninstruction au moment où vous lancez les appels de récursivité. Cela signifie qu'il continuerait indéfiniment jusqu'à ce que la limite de récurrence maximale soit atteinte ou à court de mémoire.
change ton code comme ça
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'