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

Python跨文件调用函数内全局变量报错:name 'x' not defined的解决

跨模块全局变量未定义报错:原因与解决方法

报错原因

  • Python的global关键字仅作用于当前模块的命名空间。在a.py的func1中使用global x,只是将x声明为a.py模块的全局变量,并不会自动同步到导入它的b.py模块中。
  • 调用func1()后,x确实会在a.py的全局命名空间中被创建,但b.py的命名空间里并没有这个变量,直接引用x自然会触发name 'x' not defined错误。

解决方法

方法1:通过模块名访问或导入目标变量

可以直接导入a模块的x,或者导入整个a模块后通过模块名访问x:

# 方式A:导入func1和x
from a import func1, x
func1()
add = 5 + x

# 方式B:导入整个a模块
import a
a.func1()
add = 5 + a.x

方法2:使用函数返回值获取变量

既然func1已经返回x,直接接收返回值即可,无需依赖全局变量:

from a import func1
x = func1()
add = 5 + x

方法3:提前在模块全局定义变量(可选优化)

在a.py的全局作用域先声明x,让模块结构更清晰,后续同样可以用方法1访问:

# a.py 修改后
x = 0  # 模块全局提前定义x
def func1():
    global x
    x = 2
    return x

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:23:19