Pernyataan return Python tidak merusak loop
Saya ingin mengulang melalui struktur XML. Kode saya sepertinya berfungsi. Saya memeriksa debugger dan melihat bahwa itu mencapai return, tetapi forloop terus berlanjut.
Menantikan saran Anda, terima kasih!
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'
Jawaban
Di sini masalahnya adalah, Anda memanggil fungsi yang sama adalah pernyataan lain. Jadi, jika masuk ke blok lain, itu mungkin berlangsung secara rekursif. Cobalah untuk mengubah kode Anda, hindari memanggil fungsi dari dalam. Selain itu, Anda mungkin perlu menempatkan return inside for loop, yang disorot di bawah ini
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'
Anda lupa returnpernyataan saat memulai panggilan rekursi. Artinya itu akan berlangsung selamanya sampai batas rekurison maks tercapai atau kehabisan memori.
ubah kode Anda seperti ini
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'