不同的import变量在Python2.7中有不同的id?

时间:2016-06-07 16:32:00

标签: python python-2.7

考虑以下源结构:

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

似乎它们是不同的变量;真的发生了什么?

使用绝对导入可以避免这个问题。

1 个答案:

答案 0 :(得分:0)

您可以看到repo1repo2是不同的模块,因此它们位于不同的名称空间中。

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}