自动导出所有函数(与手动指定__all__相对)
我有一个叫做 helpers.py
的文件,这个文件里定义了大约30个辅助函数,我想把它们导出,像这样:
from helpers import *
为了做到这一点,我把这30个函数都添加到了 __all__
这个变量里。请问有没有办法自动导出所有函数,而不需要一个一个去指定呢?
3 个回答
9
其实我觉得Gandaro说得对,你不一定需要指定 __all__
,不过如果出于某种未知的原因你需要这样做的话,你可以通过 dir()
来过滤关键词:
__all__ = [ helper for helper in dir() if helper == MY_CONDITION ]
9
如果你不定义 __all__
,那么在使用 from helpers import *
时,你模块里的所有函数都会被导入。
如果你有一些想要保密的函数,可以在它们的名字前面加个下划线。根据我的测试,这样做可以阻止这些函数被 import *
导入。
比如,在 helper.py 文件里:
def _HiddenFunc():
return "Something"
def AnActualFunc():
return "Hello"
然后:
>>> from helper import *
>>> AnActualFunc()
'Hello'
>>> _HiddenFunc()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_HiddenFunc' is not defined
18
是的,只要不指定 __all__
就可以了。