来自于 https://www.cnblogs.com/sayiqiu/p/10966064.html
Python import 包的机制是import进来的和系统的module都放在sys.module
这个字典里面
多个py文件在import的时候,会先去sys.module
里面检查是否已经import了,如果已经import了,就不再重复import,否则就import进来
from aaa.yyy import x
则不一样,test.py中这样from import
,此时x就是test自己命名空间中的变量。所以x只在test.py中有效,无论如何对x修改,都无法影响yyy中的x
也就是说from yyy import x
等同于
improt yyy
x= yyy.x # 当你执行x=2时,完全影响不到yyy.x
所以,如果需要共享变量,就不要使用from yyy import x这种形式,而是使用import file,然后就可以通过yyy.x来使用,然后yyy.x=‘abc‘可以进行修改。这样处理全局性的变量就可以共享的。也就是保持一个独立的namespace,这样python不会再次导入,从而实现共享。
示例:
# 目录树
multi_module
│ main.py
│ val_sync.py
# val_sync.py
DICT = {
‘a‘:1,
‘b‘:2,
}
# main.py
import val_sync as mv
print(mv.DICT)
mv.DICT[‘c‘] = 3
print(mv.DICT)
mv.DICT.pop(‘a‘)
print(mv.DICT)
python main.py
out:
{‘a‘: 1, ‘b‘: 2}
{‘a‘: 1, ‘b‘: 2, ‘c‘: 3}
{‘b‘: 2, ‘c‘: 3}
原文:https://www.cnblogs.com/wodepingzi/p/14401994.html