防止递归函数中的数据丢失

问题描述

我有一个递归函数,我将某些参数传递给它。功能如下:

def insert_category(a,b,c,d,content_to_write):
    response_content = []
    
    if content_to_write:
        response_content.extend(content_to_write)
    
    for x in b:
        write_back_content = {}
        write_back_content = {"category_path": "a","name": "b","status" : "Successful","err_desc" : "-" }
        form_category = {"pid": "0","name": "Library" }
        category_exists = db.collection.find_one({"_id":a})
        if some_cond:
                write_back_content["status"] = "Failed"
                write_back_content["err_desc"] = "Duplicate Category"
                response_content.append(write_back_content)
                continue
        elif some_other_cond:
            write_back_content["status"] = "Failed"
            write_back_content["err_desc"] = "Invalid pid i.e category path"
            response_content.append(write_back_content)
            continue
        
        insert_status = db.collections.insert(form_category)
        if not insert_status:
            write_back_content["status"] = "Failed"
            write_back_content["err_desc"] = "Unable to create category"
            response_content.append(write_back_content)
            continue
        else:    
            c[map_some_id] = insert_status
            response_content.append(write_back_content)
        insert_category(a,content_to_write=response_content)

    logger.info("RESPONSE CONTENT {}".format(response_content))
    return response_content

在这里面临的当前问题是日志行“RESPONSE CONTENT”不知何故丢失了最后附加的信息,例如:如果 response_content 中有 4 个插入,当我调用函数时,返回响应只有 3 个插入。最后一个不见了。此外,奇怪的是,日志打印了 4 次而不是一次,因为它在 for 循环之外。知道我哪里出错了吗?

解决方法

好吧,经过很长时间的调试,我意识到这个错误很愚蠢。该函数返回一些数据。所以我没有存储返回内容。所以有效的解决方案是response_content = insert_category(args)