假设我有这个:
script.py
module/
__init__.py # just contains: __all__ = ['foo', 'bar']
foo.py # has a function called foo
bar.py # has a function called bar
如果我从script.py
进行了from module import *
的工作,但是要调用foo或bar函数,我必须做foo.foo() / bar.bar()
。
有什么方法可以在名称空间中使用foo和bar函数,所以我可以通过执行foo() / bar()
来调用它们?
编辑:可接受的答案适用于此示例情况,但是经过测试,如果文件名称中包含数字,则似乎无法使用。
例如,如果您将名为bar2.py
的文件添加到具有模块hello的功能的模块文件夹中,并相应地编辑__init__.py
,则在script.py
中不会可以直接在脚本上调用hello函数(只需执行hello()
),尽管您可以执行bar2.hello()
,该方法虽然有效,但并不是我想要的。
编辑:经过大量测试,我发现通过删除__all__并仅保留导入即可。