คำสั่งส่งคืน Python ไม่แตกสำหรับลูป
Sep 15 2020
ฉันต้องการทำซ้ำผ่านโครงสร้าง XML ดูเหมือนว่ารหัสของฉันจะใช้งานได้ ฉันตรวจสอบดีบักเกอร์และเห็นว่ามันมาถึงreturnแต่forลูปยังคงดำเนินต่อไป
รอคอยคำแนะนำของคุณขอบคุณ!
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'
คำตอบ
3 Homer Sep 15 2020 at 21:28
นี่คือปัญหาคุณกำลังเรียกใช้ฟังก์ชันเดียวกันคือ else statement ดังนั้นหากเข้าสู่บล็อกอื่นก็อาจดำเนินการซ้ำได้ พยายามแก้ไขรหัสของคุณหลีกเลี่ยงการเรียกใช้ฟังก์ชันจากภายใน นอกจากนี้คุณอาจต้องวาง return ไว้ในลูปซึ่งไฮไลต์ด้านล่าง
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
คุณลืมreturnคำสั่งทันทีเมื่อคุณเริ่มการโทรซ้ำ ความหมายจะดำเนินต่อไปตลอดไปจนกว่าจะถึงขีด จำกัด การเกิดซ้ำสูงสุดหรือหน่วยความจำหมด
เปลี่ยนรหัสของคุณเป็นแบบนี้
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'