在Python编程语言中,__all__是一个特殊变量,一般用于模块(__init__.py文件)中定义了一个列表,这个列表包含了模块想要对外公开的名称。 当你使用from module import *这样的语句导入一个模块时,__all__列表中的名称会被导入到当前的命名空间中。 _explan.py:
a = 0 b = 1 c = 2 d = 'something'
__init__.py:
from ._explan import *
__all__ = ['a', 'd']
这表示,如果一个开发者使用from module import *来导入这个模块, 那么只有a,d这两个名称会被导入到当前的命名空间中。 其他的变量、函数或类定义在这个模块中,但不在__all__列表中,就不会被导入。 这是一种控制模块公开接口的方式,可以帮助避免命名空间的污染,即避免导入不需要的名称。 如果模块中没有定义__all__列表,那么使用from module import *会导入模块中所有公开的名称(即没有以_开头的名称)。