__all__在Python中是什么意思?

2022-09-05 00:56:26

我在文件中看到。它有什么作用?__all____init__.py


答案 1

链接到,但此处未明确提及,是确切的使用时间。它是一个字符串列表,定义了在模块上使用模块时将导出模块中的哪些符号。__all__from <module> import *

例如,下面的代码在 中显式导出符号和:foo.pybarbaz

__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 *

参考资料: https://docs.python.org/tutorial/modules.html#importing-from-a-package

注意:仅影响行为。中未提及的成员仍可从模块外部访问,并可使用 导入。__all__from <module> import *__all__from <module> import <member>


答案 2

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