考虑以下场景:
您
M
定义了m.py
一个包含函数的模块f
。可以这样调用:
import M; M.f()
该模块增长到一个大小,在单个文件中是不切实际的。您拆分为子
M
模块M.X
,并将以下内容放入:M.Y
M.Z
M/__init__.py
from .X import * from .Y import * from .Z import * __all__ = ["f"]
原始代码仍然有效:
import M; M.f()
但是,代码的新使用者可能会错误地直接访问子模块:
import M.X;
M.X.f()
我想防止这种情况发生,这样所有代码仍然一致地直接寻址 M,而不是任何子模块。
子模块有利于内部代码组织,并且引用 M 留下了将来容易重组的可能性。
一种选择是命名子模块_X
, _Y
, 并_Z
传达它们是内部的。这是推荐的方法吗?