在用python package的时候,很容易混淆的语法就是:
1) from path.package import *
2) from path.package.module import *
3) from path.package import module
4) from path.package.module import name
5) import path.package.module
6) import path.package
7) from path.package import subpackage
语法上这些都是可以的,其中6),7)没有什么大的意义(因为module没有引入), 2)4)不推荐使用(shallow copy的原因),1)受到文件系统的影响,比如早期的Windows版本在列文件时总是"自作主张"的将首字母大写,这样python就得不到所需要import的模块的"真正名字",因此只能依靠package文件夹的__init__.py中定义的__all__列表来加载对应的模块,这也比较麻烦,因为修改module名字之后需要同步更新这个__init__.py文件。
所以比较好的方法是 3和5,两者只是名字空间使用上稍有差别。