28

我对像numpy这样的库如何工作有疑问。当我 import 时numpy,我可以访问大量内置类、函数和常量,例如numpy.arraynumpy.sqrt

但在 numpy 中还有其他子模块,例如numpy.testing.

这是怎么做到的?在我有限的经验中,带有子模块的模块只是带有文件的__init__.py文件夹,而带有函数/类的模块是实际的 python 文件。如何创建一个也具有函数/类的模块“文件夹”?

4

1 回答 1

44

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

于 2013-09-01T04:22:28.187 回答