解决 python 模块导入时在调用函数时省略模块名的难题
在 python 中,通过 from 模块 import * 的方式导入模块时,可以在调用模块下的函数时省略模块名。但是当自定义模块时,不能直接使用这种方式。该如何解决呢?
解决方案
想要在调用自定义模块下的函数时省略模块名,需要在模块的 init__.py 文件中定义 all 变量。__all 变量是一个列表,其中包含了希望通过 from 模块 import * 方式导入的模块成员的名称。
示例代码
以下是一个示例代码,演示如何使用 all 变量解决此问题:
# ana/__init__.py from .api import * __all__ = ['api', 'get_data'] # 将 get_data 添加到 __all__ 中 # ana/api.py def get_data(): print("ok")
使用示例
导入模块后,可以直接调用 get_data() 函数,而无需添加 ana 模块名。
from ana import * get_data() # 输出 "ok"
注: 如果你不定义 all 变量,也可以不使用 from 模块 import * 的方式导入模块,而是直接导入需要的函数。例如:
from ana.api import get_data get_data() # 输出 "ok"