├───main
│ mainscript.py
│ __init__.py
│
├───pack1
│ │ moduleA.py
│ │ moduleB.py
│ │ __init__.py
#moduleA.py
def funA1():
pass
def funA2():
pass
#pack1\__init__.py
from .moduleA import funA1
__all__ = ["funA1", "moduleB"]
''''
When in mainscript "from pack1 import *"
- 如果__all__ 指定了, 那么 * 只代表 "funA1", "moduleB"
- 如果没有指定__all__, 那么* 代表"funA1", "moduleB", "moduleA"
'''
- 总结
1. __all__ 可以用在__init__.py(代表package), 或者module.py, 用于控制“import *” 中* 的范围。 2. 如果没有指定__all__, 那“import *” 就会import 当前namespace 的所有。
3. __all__只对`import *`起作用,对`from XXX import XXX`不起作用.