如何在Python中定义子模块?

时间:2017-06-08 10:59:22

标签: python module

Python有一个名为“os”的模块。它还有一些名为“os.path”的模块,它被归类为“os”。

即使只导入“os”模块,我也可以使用“os.path”方法。

import os

print(os.path.join("sdfs","x"))

我想知道如何定义这样的子模块?

2 个答案:

答案 0 :(得分:4)

这是os模块的path'魔力' - 它将子模块os导入其命名空间,实际上即使您只导入{{{}}也可以访问后者{1}}。

os
|- path
   |- __init.__.py    # 2
|- __init__.py        # 1

第一个__init__.py(#1)基本上有import .path,因此每当您只导入os时,它会在其名称空间中导入path,因此您可以将其作为os.path

(注意:os模块的情况并非如此,但这是如何实现它的。

答案 1 :(得分:2)

使用此结构:

/ Package
├── __init__.py
├── file.py
│
├─┐ subpackage
│ ├── __init__.py
│ └── file.py
│
└─┐ subpackage2
  ├── __init__.py
  └── file.py

注意每个子包都有自己的__init__.py文件。这会使Package.subpackage表现得像os.path,导入说话(考虑到您不会在.subpackage的主__init__文件下导入Package