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



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

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, b, c, d ,content_to_write=response_content)
logger.info("RESPONSE CONTENT {}".format(response_content))
return response_content

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

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

最新更新