Python调用自定义库sort函数未返回to_write触发NameError求助
错误原因
sort 函数内部定义的 to_write 属于函数局部变量,仅在 sort 函数内部可访问,主程序调用 sort 函数时没有接收其返回值,直接在 write 函数中传入未定义的 to_write 变量,因此触发 NameError。
修复方案
- 修改主程序中调用
sort函数的代码行,接收返回的字典值:
# 原代码 sort(indexus,loaded_sql,sheet) # 修改为 to_write = sort(indexus,loaded_sql,sheet)
- 可选优化:SQLite游标执行查询返回的迭代器仅可遍历一次,为避免后续复用为空的问题,建议修改查询行代码:
# 原代码 loaded_sql = cur.execute("SELECT * FROM {0}".format(cfg["DB_NAME"])) # 修改为 loaded_sql = cur.execute("SELECT * FROM {0}".format(cfg["DB_NAME"])).fetchall()
- 可选规范优化:Libar2库中
premade_table函数存在重复赋值代码listus = listus = [...],删除重复的赋值符即可,不影响正常运行。
验证
修改后运行代码,to_write变量会正常接收sort函数返回的字典类型值,传入write函数后即可正常执行插入逻辑。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

