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

导入其他脚本函数时使用当前对象出现Python NameError问题求助

问题本质

a.py中test函数里的global i,指的是**a.py模块自身的全局变量**,不是导入该函数的b.py里的变量。你在b.py定义的i只属于b.py的作用域,a.py模块中并没有定义i,所以调用test()时会触发NameError。

解决方法

方法1:用参数传递(推荐)

这是最符合Python编程规范的写法,彻底避免全局变量的依赖:
修改a.py:

# a.py
def test(i):
    print(f'The number is {i}')

修改b.py:

# b.py
from a import test

i = 22
test(i)

方法2:直接修改a模块的全局变量

如果你一定要用全局变量,可以直接操作a模块的命名空间:
修改b.py:

# b.py
import a

a.i = 22
a.test()

这样test函数就能找到a.py模块中被赋值的i了。

方法3:预先初始化模块全局变量

先在a.py里定义好i,再通过模块引用修改:
修改a.py:

# a.py
i = 0  # 预先初始化全局变量

def test():
    global i
    print(f'The number is {i}')

修改b.py:

# b.py
import a

a.i = 22
a.test()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:10:36