python'__init__.py'文件中'__all__'的作用
以前我以为__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__
中, 则可以被正常引入.