Python有一个名为“os”的模块。它还有一些名为“os.path”的模块,它被归类为“os”。
即使只导入“os”模块,我也可以使用“os.path”方法。
import os
print(os.path.join("sdfs","x"))
我想知道如何定义这样的子模块?
答案 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
。