在Python项目里为了便于管理代码逻辑,一般会把py文件(注意在Python里一个py文件被称作为一个Module)归档到相应的文件夹里。

1. 没有__init__.py

此时文件夹只是一个路径而已,需要导入里面的py文件(Module)里的属性、函数、类等需要如下访问方式:

from 【文件夹.py文件名】 import 【该模块里的属性、函数、类】

2. 有__init__.py

当在文件夹里创建__init__.py文件能够使该文件夹变成一个Module,
当这个文件夹(Module)被import时,会执行__init__.py里的代码,
__ init__.py里面一般写该文件夹Module里的子Module的需要具体import的属性,函数,类等,__ init__.py里面内容如下:

from 【.子Module文件名】import 子Module里的属性,函数,类等

这样的话在其他文件访问该模块是就能实现如下访问形式:

from 【文件夹Module】 import 【子Module里的属性,函数,类等

注意 init.py里的一般可以写__all__ = [...]用来对import的对外暴露控制,也可以不写,则默认不作限制




在Python项目里为了便于管理代码逻辑,一般会把py文件(注意在Python里一个py文件被称作为一个Module)归档到相应的文件夹里。

1. 没有__init__.py

此时文件夹只是一个路径而已,需要导入里面的py文件(Module)里的属性、函数、类等需要如下访问方式:

from 【文件夹.py文件名】 import 【该模块里的属性、函数、类】

2. 有__init__.py

当在文件夹里创建__init__.py文件能够使该文件夹变成一个Module,
当这个文件夹(Module)被import时,会执行__init__.py里的代码,
__ init__.py里面一般写该文件夹Module里的子Module的需要具体import的属性,函数,类等,__ init__.py里面内容如下:

from 【.子Module文件名】import 子Module里的属性,函数,类等

这样的话在其他文件访问该模块是就能实现如下访问形式:

from 【文件夹Module】 import 【子Module里的属性,函数,类等

注意 init.py里的一般可以写__all__ = [...]用来对import的对外暴露控制,也可以不写,则默认不作限制