我正在查看熊猫的源代码here,发现以下语句有点奇怪:
from pandas._libs import NaT, groupby as libgroupby, iNaT, lib, reduction
似乎它将Nat和groupby这两个库导入了多个模块(libgroupby,iNaT,lib,reducing)。
我去了pandas._libs
库here,但是没有找到任何名称为NaT
的模型。确实有一个groupby.pyx
,我假设是groupby
库?
导入的库数量可以少于导入的模块吗?这是如何运作的?根据我过去的理解,我们可以做import a as b
,但是我们不能做import a as b, c
。
答案 0 :(得分:2)
它从pandas._libs
实际上导入了5个方法/类/模块:
现在NaT
文件夹中确实不存在iNaT
和_libs
,但是由于它们是从{{1}的其他位置导入的,因此不会出现导入错误。 }的_libs。
每当从软件包或其子软件包中导入某些内容时,软件包的__init__.py
都会隐式执行。
因此,将执行__init__.py
内的__init__.py
,其中_libs
是从软件包NaT, iNaT etc.
导入的,因此也可以从.tslibs
软件包中导入它们。
现在,如果您要在.tslibs文件夹中查找.libs
或NaT
,将不会找到它,但是如果您查看iNaT
的{{1}},则将请参见此处__init__.py
和.tslibs
是从NaT
导入的,因此,如果您这次查看该文件,则将在其中找到iNaT
和.nattype
的定义
您可以查看docs以获得更好的解释
您可以这样导入它,然后可能更容易了解发生了什么事情:
NaT
此导入将与您的问题中的import语句完全相同。