【发布时间】:2022-01-22 09:17:28
【问题描述】:
我正在用 python 编写一个库。它有一个包和三个模块,例如
mypackage
__init__.py
utils.py
fileio.py
math.py
如果我只是将__init__.py 留空,我的用户必须弄清楚哪些功能在哪些模块中,这很烦人。我拥有三个模块这一事实是一个不重要的实现细节。
也许我应该将主要功能导入__init__.py,像这样
from .utils import create_table
from .fileio import save_rows, load_rows
from .math import matrix_inverse
这样我的用户就可以做
import mypackage as myp
rows = myp.load_rows()
这是最佳做法吗?
将所有符号放入__init__.py的替代方案如何,例如
from .utils import *
from .fileio import *
from .math import *
如果有任何我不想想要公开的函数,我会在它们前面加上下划线。那个更好吗?这对我来说当然更容易。
如果fileio.py需要调用utils.py中的一些函数怎么办?我可以放
from .utils import *
进入fileio.py,但这不会创建循环或冗余引用吗?处理这个问题的最佳方法是什么?
【问题讨论】: