10.2 控制模�被全部导入的内容¶

问题¶

当使用’from module import *’ 语�时,希望对从模�或包导出的符�进行精确控制。

解决方案¶

在你的模�中定义一个�� __all__ �明确地列出需�导出的内容。

举个例�:

# somemodule.py
def spam():
    pass

def grok():
    pass

blah = 42
# Only export 'spam' and 'grok'
__all__ = ['spam', 'grok']

讨论¶

尽管强烈�对使用 ‘from module import *’, 但是在定义了大����的模�中频�使用。 如果你��任何事, 这样的导入将会导入所有�以下划线开头的。 �一方�,如果定义了 __all__ , 那么�有被列举出的东西会被导出。

如果你将 __all__ 定义�一个空列表, 没有东西将被导入。 如果 __all__ 包�未定义的�字, 在导入时引起AttributeError。