考虑以下源结构:
module/data/__init__.py
module/data/repo.py
module/__init__.py
module/test.py
以下代码:
repo.py
goods = {}
test.py
from data import repo as repo1
from module.data import repo as repo2
print id(repo1.goods)
print id(repo2.goods)
139783188635272
139783188649136
似乎它们是不同的变量;真的发生了什么?使用绝对导入可以避免这个问题。
答案 0 :(得分:0)
您可以看到repo1
和repo2
是不同的模块,因此它们位于不同的名称空间中。
print globals()
#Produces the below output (formatted for readability)
{'__builtins__': <module '__builtin__' (built-in)>,
'__file__': '/home/zhou/PycharmProjects/test_import/module/test.py',
'repo2': <module 'module.data.repo' from '/home/zhou/PycharmProjects/test_import/module/data/repo.pyc'>,
'__package__': None,
'repo1': <module 'data.repo' from '/home/zhou/PycharmProjects/test_import/module/data/repo.pyc'>,
'__name__': '__main__', '__doc__': None}