我正在查看pandas源代码here ,我发现下面的说法有点奇怪:
from pandas._libs import NaT, groupby as libgroupby, iNaT, lib, reduction
似乎它导入了 Nat 和 groupby 这两个库,作为多个模块(libgroupby、iNaT、lib、reduction)。
我访问了
pandas._libs
库 here ,但我没有找到任何名为NaT
的模型。确实有一个groupby.pyx
,我认为它是groupby
库?导入的库的数量可以少于导入的模块的数量吗?这是如何运作的?根据我过去的理解,我们可以
import a as b
,但不能import a as b, c
。
最佳答案
来自 pandas._libs
它实际上导入了 5 个方法/类/模块:
- NaT,
- grouby 作为 libgroupy(因此在您的脚本中您现在将使用 libgroupy)
- iNaT
- 库
- 减少
现在NaT
和iNaT
确实不存在于_libs
中文件夹,但不会给出导入错误,因为它们是从 __init__.py
中的其他位置导入的。 _libs。
__init__.py
每当从该包或其子包导入某些内容时,包的 都会隐式执行。
所以__init__.py
里面_libs
将执行,其中 NaT, iNaT etc.
从包 .tslibs
导入因此使它们可以从 .libs
导入也打包。
现在,如果您要查找 NaT
或iNaT
在 .tslibs 文件夹中,您将找不到它,但如果您查看 __init__.py
的.tslibs
你会在这里看到NaT
和iNaT
是从 .nattype
导入的,所以如果这次你查看该文件,你会发现 NaT
的定义和iNaT
在那里。
您可以查看docs为了更好的解释
<小时/>您可以像这样导入它,然后您可能会更容易理解发生了什么:
from pandas._libs import NaT, iNaT, lib, reduction, groupby as libgroupby
此导入的作用与您问题中的导入语句的作用完全相同。
关于python - Pandas源码导入多个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54531476/