Python 熊猫源代码导入多个模块
我在查看pandas的源代码时,发现以下语句有点奇怪:Python 熊猫源代码导入多个模块,python,python-3.x,pandas,cython,pandas-groupby,Python,Python 3.x,Pandas,Cython,Pandas Groupby,我在查看pandas的源代码时,发现以下语句有点奇怪: from pandas._libs import NaT, groupby as libgroupby, iNaT, lib, reduction 它似乎将Nat和groupby(这两个库)作为多个模块(libgroupby、iNaT、lib、reduce)导入 我去了熊猫图书馆,但没有找到任何名为NaT的模型。确实有一个groupby.pyx,我假设它就是groupby库 导入的库的数量是否可以少于导入的模块?这是怎么回事?根据我过去的
from pandas._libs import NaT, groupby as libgroupby, iNaT, lib, reduction
它似乎将Nat和groupby(这两个库)作为多个模块(libgroupby、iNaT、lib、reduce)导入
groupby.pyx
,我假设它就是groupby
库将a作为b导入
,但我们不能将a作为b导入,c
从pandas.\u libs中,它实际导入了5个方法/类/模块:
现在
NaT
和iNaT
确实不存在于\u libs
文件夹中,但它不会给出导入错误,因为它们是从库的\u init\u.py
中的其他地方导入的。每当从某个包或其子包导入某个内容时,该包的
\uuuu init\uuuuuuuuuuuuupy.py
就会隐式执行。因此将执行
\u libs
内部的\u init\uuuuuuuuuuuuuuuupy
,其中NaT、iNaT等
从包导入。tslibs
因此也可从.libs
包导入。现在,如果您在.tslibs文件夹中查找
NaT
或iNaT
,您将找不到它,但是如果您查看的\uuu init\uuuuuuuuuuupy
。tslibs
的您将在这里看到NaT
和iNaT
是从导入的,因此,如果您这次查看该文件,您将在其中找到NaT
和iNaT
的定义
你可以看一下这本书,以得到更好的解释
您可以这样导入,这样您就更容易理解发生了什么:
from pandas._libs import NaT, iNaT, lib, reduction, groupby as libgroupby
此导入操作与您问题中的导入语句的操作完全相同。您问题的第二部分得到了回答@DavidW感谢您为我指明了方向!谢谢非常精确的答案!