为什么在Python中隐式导入子包?

时间:2016-07-28 14:11:21

标签: python import

我有一个名为a的python包,其中包含两个文件__init__.pyb

a/
a/__init__.py
a/b.py

文件内容:

# a/__init__.py
from .b import *

# a/b.py
c = 1

当我在Python中导入a时,为什么我可以直接使用a.b?我很困惑,因为我没有在b中明确导入a/__init__.py

如果我使用 a/__init__.py,则b的命名空间中没有a。所以似乎from .b import *(或from .b import c)也导入b,为什么?

我已经检查了Python文档和SO中的几个帖子,但没有找到相关问题。

我希望b中的所有内容都来自b而不是a本身,然后我可以将a/__init__.py修改为

# a/__init__.py
from .b import *
del b

这样好吗?

0 个答案:

没有答案