我刚刚遇到困扰我的事情
我一直以为导入一个父母'模块应该导入其下的所有内容
但是,在跑步时:
import pandas
pandas.io.data
我收到错误:AttributeError: 'module' object has no attribute 'data'
。
然而跑步:
import pandas.io.data
导致无错误并导入模块 有人可以解释一下这种行为吗?
答案 0 :(得分:2)
原因是pandas.io
是pandas
包的子模块。子包或子模块不会自动导入,但如果您愿意,可以在模块的__init__.py
中执行此操作(通常您不想这样做)。
Packaging非常简单。如果文件夹具有__init__.py
文件,则将其视为包。在此文件中,您可以为您的包布置任何初始化例程。该文件也可以为空。如果包中的子文件夹包含自己的__init__.py
,则此文件夹将被视为子包。
如果您看到pandas folder structure,您会看到io
是一个子包。主__init__.py
不会导入pandas.io.data
,这就是您必须自己完成的原因。
答案 1 :(得分:0)
"进口"不导入子模块。 你可以写:
from pandas import *
但不推荐,因为它违反了原则"明确比隐含更好"。