转载至:https://mp.weixin.qq.com/s/PksqW03ZtlAiMhsTiH1lBg
刚学python 同学,一定会留意到,当你每创建一个包的时候,下面就会自动给你创建一个__init__.py文件,那这个文件到底有啥用呢?接下来就带大家一起来认识一下。
在平常大家导包的时候,是不是一般这样子import xxx.xxx.xxx 或者from xxx.xxx import xxx, 现在就有一个疑问来了,若是我现在想批量导入一些模块呢?
肯定有同学就说了,一个一个导入不就行了吗?你这么说,其实也没错,还有其他的办法吗?
这个时候__init__.py文件就用上了派场,因为在导包的时候,其实相当于是导入一个__init__.py文件,所以我们是不是在这个文件中配置好我们要导入的模块,就可以实现批量导入了呢?
看实例:
以上面的目录结构为例,我们在operConf下的__init__.py文件加入:
from operConf import confManage from operConf import globalsManage import os
再创建一个模块,把operConf这个包导进来,并且把我们打印一下我们引用模块的信息:
执行结果:
有没有发现这下就可以将我们所需要的模块全部导进来了?
其实在__init__.py文件中,有一个很重要的变量__all__,我们其实只要配置了__all__,就可以在其他模块中直接from 包名 import * ,将配置在__all__列表中的所有模块全部一次性导入进来。
就以上面的为例,我们再优化一下:
我们在operConf下的__init__.py文件中优化为:
from operConf import confManage from operConf import globalsManage import os __all__ = ["confManage", "globalsManage", "os"]
导入包并打印导入模块信息:
再执行一下:
难道就这些吗?
不,当前你可以在__init__.py文件中导入模块中类、也可以在__init__.py文件中写入一些函数进行导入(不建议这样用)