在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的对外暴露控制,也可以不写,则默认不作限制