如果一个模块 spam 没有定义 __all__, 执行 from spam import * 的时候会将 spam 中非下划线开头的成员都导入当前命名空间中, 这样当然就有可能弄脏当前命名空间. 如果显式声明了 __all__,import * 就只会导入 __all__ 列出的成员. 如果 __all__ 定义有误, 列出的成员不存在, 还会明确地抛出异常, 而不是默默忽略.
来源: http://www.bubuko.com/infodetail-2814385.html