有没有办法从根级主应用程序导入包中的所有模块,并在 Python 3 中立即使用模块中的函数?这是一个示例文件树:
+app
|- __init__.py
|- main.py
|+ package
|- __init__.py
|- module.py #(contains function1, function2 and function 3)
我想避免在 main.py 中使用以下 import 语句(对于复杂的应用程序,它可能会变得冗长而草率):
from package.module import function1, function2, function3
这很好,因为它让我可以function1()
从 main.py调用。单独从 package.module 导入一个函数意味着我必须调用函数的完整目录才能在我的脚本中使用它(或在新函数中使用它的别名)。例如:
import package.module
package.module.function(param)#not fun...too long!
#or like this
def newFunction(param):
'''why create a new function to handle an already existing one?
Bad form and non Pythonic'''
return package.module.function(param)
如果我包含__all__ = ["module1", "module2"]
在__init__.py
我的包裹中,这意味着我必须执行以下操作:
from package import * #it is said this is bad form as well
module.function(param)
#I just want the function and don't want to call module also
我的目标是导入包和模块,然后充分使用模块中的所有功能,而无需每次我想使用该功能时显式调用包和模块。沿着以下思路思考:
import package.module
function1(x)
我已经阅读了Python 3 关于 modules 和 packages 的文档。想法/帮助表示赞赏。