__init__.py的作用

拥有 init.py 文件的文件夹被视为包(模块),可以通过 import 正常导入包内的文件,否则,会报 ImportError 错误。

当 import 包或包内模块的时候,会先执行 init.py 文件中的代码,因此可以通过 init.py 组织包内各个子模块,然后在包外文件导入它们时更加方便简洁。我们来看一个例子:

目录结构如下:

1
2
3
4
5
- app
- __init__.py
- add.py
- sub.py
- main.py

add.py

1
2
def add(a, b):
return a + b

sub.py

1
2
def sub(a, b):
return a - b

main.py

1
2
3
4
from app.add import add
from app.sub import sub

print(add(1, 2), sub(1, 2))

接下来我们在 init.py 中写一些代码:

1
2
from .add import add
from .sub import sub

那此时 main.py 中就可以这样写:

1
2
3
from app import add, sub

print(add(1, 2), sub(1, 2))