A instrução de retorno do Python não interrompe o loop
Sep 15 2020
Eu gostaria de iterar por meio de uma estrutura XML. Meu código parece funcionar. Verifiquei o depurador e vi que atingiu o return, mas o forloop continua.
Aguardo seu conselho, obrigado!
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'
Respostas
3 Homer Sep 15 2020 at 21:28
O problema é que você está chamando a mesma função e a instrução else. Portanto, se entrar no bloco else, poderá continuar recursivamente. Tente alterar seu código, evitando chamar a função de dentro. Além disso, pode ser necessário colocar return dentro do loop for, destacado abaixo
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
Você esqueceu um returnextrato assim que iniciou chamadas de recursão. O que significa que duraria para sempre até que o limite máximo de recorrência seja atingido ou fique sem memória.
mude seu código assim
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'
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino