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

Python跨文件修改全局变量:不同导入方式的结果差异答疑

两种导入方式导致全局变量修改结果不同的原因

先看你的代码示例:

a.py 文件内容

x = 10 # global variable

def modify_global_variable():
    global x # 声明使用全局变量x
    x = 20 # 修改全局变量x的值

第一种写法:from a import x

b.py 文件内容

from a import x

modify_global_variable()
print(x)

执行后输出10,原因是:

  • from a import x 是把a模块中全局变量x的当前值(10)复制了一份,放到b文件自己的命名空间里,相当于b里有了一个独立的变量x,和a模块里的x只是初始值一致,并不是同一个变量。
  • 调用modify_global_variable()时,确实修改了a模块内部的全局x(变成20),但b文件里的x还是之前复制过来的10,所以打印结果是10。

第二种写法:import a

b.py 文件内容

import a

a.modify_global_variable()
print(a.x)

执行后输出20,原因是:

  • import a 是把整个a模块作为一个对象导入到b的命名空间里,后续访问的a.x始终指向a模块内部的那个全局变量。
  • 调用a.modify_global_variable()修改的就是a模块对象内部的x属性,之后打印a.x自然能拿到更新后的20。

简单总结:前者是复制变量值到本地命名空间,后者是直接操作原模块对象的属性,这就是两种写法结果不同的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:42:37