python __init__.py的主要作用

__init__.py的主要作用

  • Python中 package的标识
  • 在__init__.py中定义__all__用来模糊导入
  • 编写Python代码(不建议这么做,实际的逻辑可以在其他py文件中写,__init__.py应该尽量轻)

package标识

  • 在pycharm中new,有DirectoryPython Package两个选项。
  • 分别创建Directory和package,发现前者只是一个空目录,后者包含一个__init__.py文件。

这就是__init__.py的package标识作用,他告诉python,这不是一个普通的目录而是一个package。

有__init__.py文件的情况下,可以识别init_test

python __init__.py的主要作用_第1张图片

 

删除掉__init__.py文件,识别不了init_test

python __init__.py的主要作用_第2张图片

 

定义__all__用来模糊导入

在python中有两种导入方式:

  • 精确导入
from init_test import test
import init_test.test
  • 模糊导入
from init_test import *

这种语法会将init_test包下的所有模块都导入到当前py文件中,效果如下:

python __init__.py的主要作用_第3张图片

 

很奇怪没有将三个test模块导入(test模块中有打印自己的名称,因为是直接print所以如果导入就会执行

在__init__.py中加入__all__变量,然后执行:

__all__ = ['test','test1','test2']

python __init__.py的主要作用_第4张图片

 

现在已经成功导入,这就是定义__all__用来控制模糊导入的作用,对外能导入的模块由__all__变量控制。

__all__介绍

python可以使用__all__在模块级别暴露接口,他提供了那些公开接口的约定

__all__应该是list类型

__init__.py中可以写python代码实现逻辑

从后缀可以看出,init文件也是python文件,所以在他里边同样可以实现逻辑,但是因为在python体系中,它有着自己的含义,我们通常不建议直接在其中实现逻辑,应该保证它足够轻。


以上就是对__init__.py的介绍,我们在刚开始接触时,了解这么多就可以了,其他更深入的理解和使用方式在日常的开发中慢慢的了解。

你可能感兴趣的:(python,开发)