You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环调用自定义函数时出现NameError问题求助

问题原因及解决办法

1. 函数定义顺序不对

如果updateForexdb函数是在fillpricetable_assetid之后定义的,Python执行到fillpricetable_assetid里的调用语句时,还没加载updateForexdb的定义,自然会报找不到的错误。

  • 解决:把updateForexdb的定义代码移到fillpricetable_assetid之前,确保调用前函数已经被定义。

2. 函数处于局部作用域

要是updateForexdb是定义在另一个函数内部(比如某个嵌套函数里),那它的作用域只限于那个内部函数,fillpricetable_assetid根本访问不到它。

  • 解决:把updateForexdb移到全局作用域(所有函数外面),或者通过参数传递的方式让外部函数能调用到它。

3. 函数名拼写/大小写不匹配

Python是大小写敏感的,检查你实际定义的函数名和fillpricetable_assetid里调用的updateForexdb是否完全一致——比如定义的是UpdateForexdb(首字母大写),但调用时写的是小写开头,就会触发这个错误。

  • 解决:统一函数名的拼写和大小写,确保调用和定义完全一致。

4. 模块导入问题(如果函数在其他文件)

如果updateForexdb是在另一个.py文件里定义的,要确认导入方式是否正确。比如只导入了模块但没指定函数,或者导入路径不对,都会导致找不到函数。

  • 解决:比如函数在utils.py里,要么用from utils import updateForexdb直接导入函数,要么调用时写utils.updateForexdb(...)。

额外代码优化提示

  • 你的更新函数里mycursor.close少了括号,应该写成mycursor.close(),否则不会实际关闭游标。
  • fillpricetable_assetid里的SELECT语句用f-string拼接Ticker存在SQL注入风险,建议改成参数化查询:
    mycursor.execute("SELECT `Price` FROM `History_price` WHERE `Ticker` LIKE %s ORDER BY `History_price`.`Time` DESC LIMIT 1", (x,))
    

内容的提问来源于stack exchange,提问作者Mat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:35:10