Python __all__


1. 问题

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



2. 解决方案

定义变量 __all__来明确地列出需要导出的内容。

def spam():
    pass

def grok():
    pass

blah = 42
# 只导出 spam、grok
__all__ = ['spam', 'grok']


3. 讨论

尽管强烈反对使用 from module import *, 但是在定义了大量变量名的模块中频繁使用。 如果你不做任何事, 这样的导入将会导入所有不以下划线开头的。 另一方面,如果定义了__all__ , 那么只有被列举出的东西会被导出。

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



posted @ 2022-10-17 22:04  做梦当财神  阅读(56)  评论(0编辑  收藏  举报