我看到了 Python 模块的常见模式。有时会__init__.py
导入其子模块:
例如
mymod/
__init__.py:
from . import subm1, subm2
__all__ = ['subm1', 'subm2']
subm1.py:
def subf1():
...
__all__ = ['subf1']
subm2.py:
def subf2():
...
__all__ = ['subf2']
所以客户端代码只需要这样做:
import mymod
mymod.subm1.subf1()
mymod.subm2.subf2()
代替:
import mymod.subm1
import mymod.subm2
mymod.subm1.subf1()
mymod.subm2.subf2()
哪一个是最佳实践TM?递归导入有什么问题还是我应该坚持默认行为?默认行为的基本原理是什么?