Python中一个py文件就是一个模块,“__all__”变量是一个特殊的变量,能够在py文件中,也能够在包的__init__.py中出现。
一、在普通模块中使用时,表示一个模块中容许哪些属性能够被导入到别的模块中,
如:全局变量,函数,类。以下,test1.py和main.py
test1.pypython
__all__=["test"] def test(): print('----test-----') def test1(): print('----test1----')
main.py函数
from test1 import * def main(): test() #test1() main()
两个文件在同一个目录下。
此时执行python main.py时结果以下:
可是若是放开main.py的注释后,以下:
那么在模块中的__all__变量就是为了限制或者指定能被导入到别的模块的函数,类,全局变量等,若是指定了那么只能是指定的那些能够被导入,没有指定默认就是所有能够导入,固然私有属性应该除外。
二、在包下的__init__.py中
sound/effects/__init__.py中添加__all__ = ["echo", "surround", "reverse"]
那么就会在from sound.effects import *时,包含上面三个模块。当__init__.py为空时,只是导入这个包,并不是导入模块。
__init__.py中能够执行一些初始化内容,好比:
from . import test1 导入当前目录下的test1模块
from .. import test 导入上一层目录下的test模块
由于导入 包时会首先执行下__init__.py这个文件
原文:https://blog.csdn.net/chuan_day/article/details/79694319 .net