我对像numpy这样的库如何工作有疑问。当我 import 时numpy,我可以访问大量内置类、函数和常量,例如numpy.array等numpy.sqrt。
但在 numpy 中还有其他子模块,例如numpy.testing.
这是怎么做到的?在我有限的经验中,带有子模块的模块只是带有文件的__init__.py文件夹,而带有函数/类的模块是实际的 python 文件。如何创建一个也具有函数/类的模块“文件夹”?
.py包含文件和 a的文件夹__init__.py称为 a package。包含类和函数的文件之一是module. 文件夹嵌套可以给你子包。
例如,如果我有以下结构:
mypackage
__init__.py
module_a.py
module_b.py
mysubpackage
__init__.py
module_c.py
module_d.py
我可以导入mypackage.module_a等等mypackage.mysubpackage.module_c。
您还可以mypackage通过将该代码放在__init__.py. 虽然这通常被认为是丑陋的。
如果您查看numpy__init__.py ,您会在其中看到很多代码 - 其中很多是定义这些顶级类和函数。__init__.py代码是加载包时执行的第一件事。