Python-有人可以用Python解释__all__吗?
越来越多地使用Python,并且不断看到__all__
在不同__init__.py
文件中设置的变量。有人可以解释这是什么吗?
-
这是该模块的公共对象的列表,由解释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*
是从给定的命名空间中导入所有不以下划线开头的符号。