具有子模块和函数的Python模块

时间:2013-09-01 04:20:13

标签: python function module

我对像numpy这样的图书馆工作有疑问。当我导入numpy时,我可以访问许多内置类,函数和常量,例如numpy.arraynumpy.sqrt等。

但是在numpy内还有其他子模块,例如numpy.testing。

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

1 个答案:

答案 0 :(得分:23)

包含.py个文件和__init__.py的文件夹称为package。其中一个包含类和函数的文件是module。文件夹嵌套可以为您提供子包。

例如,如果我有以下结构:

  mypackage
     __init__.py
     module_a.py
     module_b.py
        mysubpackage
             __init__.py
             module_c.py
             module_d.py

我可以导入mypackage.module_amypackage.mysubpacakge.module_c等等。

您还可以通过将代码放在mypackage中来向__init__.py添加函数(就像您提到的numpy函数一样)。虽然这通常被认为是丑陋的。

如果你看numpy's __init__.py ,你会看到很多代码 - 其中很多是定义这些顶级类和函数。 __init__.py代码是加载包时执行的第一件事。