python'__init__.py'文件中'__all__'的作用

发布时间 2023-08-14 11:22:33作者: 顺其自然,道法自然

以前我以为__all__的作用是限制导出哪些函数或者变量, 后来发现只有在from xx import *语句中才是这样, 而import xxx是不起作用的, 后者是可以使用模块中的所有全局变量和函数的.
例如下面的__init__.py文件:

__all__ = ['brysj2','__author__']
brysj2 = 88
a1 = 99
__author__ = 'LaiYonghao'

如果使用如下方式引用此模块:

from Message import *
print(brysj2)
print(a1)   # NameError: name 'a1' is not defined
print(__author__)	# 可以正常使用

a1变量不能使用.
值得注意的是:
使用from Message import *引用一个模块时, 对于以_开头的变量是不会被引入的, 但是如果把它放入__all__中, 则可以被正常引入.