防止递归函数中的数据丢失
Prevent loss of data in recursive function
我有一个递归函数,我向其传递了某些参数。函数如下:
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”以某种方式丢失了最后附加的信息,例如:如果 response_content 中有 4 个插入,当我调用此函数时,return 响应只有 3 个插入。最后一个不见了。另外,奇怪的是,日志打印了 4 次而不是一次,因为它超出了 for loop.Any 我哪里出错的想法?
好吧,经过很长时间的调试,我意识到这个错误很愚蠢。函数 returns 一些数据。所以我没有存储 return 内容。所以有效的解决方案是 response_content = insert_category(args).
我有一个递归函数,我向其传递了某些参数。函数如下:
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”以某种方式丢失了最后附加的信息,例如:如果 response_content 中有 4 个插入,当我调用此函数时,return 响应只有 3 个插入。最后一个不见了。另外,奇怪的是,日志打印了 4 次而不是一次,因为它超出了 for loop.Any 我哪里出错的想法?
好吧,经过很长时间的调试,我意识到这个错误很愚蠢。函数 returns 一些数据。所以我没有存储 return 内容。所以有效的解决方案是 response_content = insert_category(args).