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

Python调用导入模块的函数后获取其内部变量报NameError如何解决

报错原因
  • 你代码中的global x仅声明当前test函数内使用的x是funcA.py模块内部的全局变量,不会自动同步到导入该模块的main.py作用域中
  • 你全程没有给x赋过初始值,哪怕是在funcA模块内部,调用test()时试图读取的全局x从始至终没有被定义,自然会触发NameError
修复方案

根据你的使用场景可以选以下两种改法:

方案1:定义funcA模块全局变量,按需导入

先给funcA.py里的x补初始值:

# 先声明模块全局变量x
x = 0

def test():
    global x
    # 如果需要修改x的值可以在这里赋值,比如x = 2
    y = 2
    return x

main.py可以直接导入使用:

from funcA import *

test()
print(x)

小提示:Python中from xx import *导入整数、字符串等不可变类型的模块变量时是值拷贝,后续原模块修改该变量不会同步到当前文件的导入值。如果需要实时同步,建议改用import funcA,调用时写funcA.x、funcA.test()即可。

方案2:避免用全局变量,直接接收函数返回值

如果不需要跨作用域共享x,直接把需要的值通过return返回即可,写法更安全:
funcA.py修改为:

def test():
    x = 2
    y = 2
    return x

main.py修改为:

from funcA import *

x = test()
print(x)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:36:04