簡體   English   中英

Python return 語句不會中斷 for 循環

[英]Python return statement doesn't break for loop

我想遍歷 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'

這里的問題是,您正在調用相同的函數是 else 語句。 所以,如果它進入 else 塊,它可能會遞歸地進行。 嘗試修改您的代碼,避免從內部調用該函數。 此外,您可能需要將 return 放在 for 循環中,如下突出顯示

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'

當您開始遞歸調用時,您忘記了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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM