我有一个关于图书馆如何喜欢 numpy 的问题工作。当我导入 numpy
时,我可以访问大量内置类、函数和常量,例如 numpy.array
、numpy.sqrt
等
但是在 numpy 中还有额外的子模块,例如 numpy.testing
。
这是怎么做到的?以我有限的经验,带有子模块的模块只是带有 __init__.py
文件的文件夹,而带有函数/类的模块是实际的 python 文件。如何创建一个也有函数/类的模块“文件夹”?
最佳答案
包含.py
文件和__init__.py
的文件夹称为包
。其中一个包含类和函数的文件是 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
(如您提到的 numpy 函数),方法是将该代码放在 __init__.py
中。虽然这通常被认为是丑陋的。
如果你看numpy's __init__.py
你会在那里看到很多代码——其中很多是定义这些顶级类和函数。 __init__.py
代码是加载包时首先执行的代码。
关于具有子模块和函数的 Python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18555193/