我对像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
代码是加载包时执行的第一件事。