讨论采用 * 模糊导入或者 单独导入变量 会在不同文件生成不同的对象
.a
└── mypackage
├── a.py
├── b.py
├── c.py
b.py内容如下
import c def b(): print ( " b方法开始 " ) print (c.config) print (id(c.config))
c.py内容如下
config = " ONCE "
a.py内容如下
import b import c def a(): print (c.config) c.config = " TWO " print (c.config) print (id(c.config)) print ( " a方法执行完毕 " ) a() b.b()
执行a.py,输出
ONCE TWO 2492322048184 a方法执行完毕 b方法开始 TWO 2492322048184
id值相同,意味着此时a,b文件共用一个对象
===========================我是分割线===========================
但是。。。假如
======a.py====== import b from c import config def a(): global config print (config) config = " TWO " print (config) print (id(config)) print ( " a方法执行完毕 " ) a() b.b() ======b.py====== from c import config def b(): print ( " b方法开始 " ) print (config) print (id(config)) ======c.py====== config = " ONCE "
那么此时a.py输出为
ONCE TWO 1813891082424 a方法执行完毕 b方法开始 ONCE 1813894255144
id值不同,意味着不是同一个对象
因此如果需要使用可修改配置文件的全局变量,需要用文件名方式导入,将其当作一个全局类使用
单独导入或者模糊导入会拥有不同的id和引用类型