Python中的__all__是干什么的


Python中的all是干什么的

它是该模块的公共对象列表,由解释import *。它会覆盖隐藏以下划线开头的所有内容的默认设置。

链接到,但未在此明确提及,正好在何时__all__使用。它是一个字符串列表,用于定义模块from <module> import *上使用时模块中将导出的符号。

例如,以下代码foo.py显式导出符号bar和baz:

__all__ = ['bar', 'baz']

waz = 5
bar = 10
def baz(): return 'baz'

然后可以像这样导入这些符号:

from foo import *

print bar
print baz

# The following will trigger an exception, as "waz" is not exported by the module
print waz

如果__all__上面已注释掉,则此代码将执行完成,因为默认行为import *是从给定的命名空间导入所有不以下划线开头的符号。