如下图所示,python中的模块是指文件夹下的py文件,A文件夹就可以称为1个自定义包,但是b文件件不能称为一个包,因为包下要包含__init__.py文件。
而__init__.py文件的作用是什么那,我感觉主要是简化import时的长度,我的理解如下,举个例子,假设我们现在在A文件夹下没有__init__.py模块了,如第二张图,那么我们想在main文件里调用aa文件夹下的aaaaa.py内的函数,我们必须写成如下图3一样的形式,可以看出这样的import是非常的不简洁的,但是我们有了__init__.py文件后,我们就可以在__init__.py文件里import文件夹aa下的模块,如下图4,这样我们在main.py文件下想导入A/aa/aaaaa.py内的函数就可以直接写成下图5的形式,就简洁了很多。
另外,因为import只能import进当前文件夹下模块,例如你想在b/b.py文件里调用A/aaa.py模块里的函数,你不能直接from A import aaa,这样就会报错如下,
我们可以再b.py模块里把A所在的路径给加入到环境变量,如下图所示,这样就不会报错