Python dönüş ifadesi döngü için kırılmaz

Sep 15 2020

Bir XML yapısı üzerinden yinelemek istiyorum. Kodum çalışıyor gibi görünüyor. Hata ayıklayıcıyı kontrol ettim ve ona ulaştığını gördüm return, ancak fordöngü devam ediyor.

Tavsiyenizi dört gözle bekliyorum, teşekkür ederim!

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'

Yanıtlar

3 Homer Sep 15 2020 at 21:28

Burada sorun şu ki, aynı işlevi başka bir deyim olarak adlandırıyorsunuz. Yani eğer else bloğuna girerse, yinelemeli olarak devam edebilir. Fonksiyonu içeriden çağırmaktan kaçınarak kodunuzu değiştirmeye çalışın. Ayrıca, aşağıda vurgulanan döngü için dönüşün içine yerleştirmeniz gerekebilir

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Özyinelemeli aramalara başladığınızda bir ifadeyi unuttunuz . Bu, maksimum yineleme sınırına ulaşılana veya bellek tükenene kadar sonsuza kadar devam edeceği anlamına gelir.

kodunu böyle değiştir

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'