导入A.B也导入A?
问题描述
当我导入包中的子包时,是否可以依赖父包也被导入这一事实?
例如,此方法有效
python -c "import os.path; print os.getcwd()"
我不应该显式import os使os.getcwd可用吗?
解决方案
关于包,有一点很重要,那就是加载和可用之间是有区别的。
使用import a加载模块a(可以是包),并以a的名称使其可用。
使用from a import b加载模块a(它肯定是一个包),然后加载模块a.b并以b的名称使仅此可用。请注意,a也在该过程中加载,因此应该执行的任何初始化都将发生。
使用import a.b加载这两个文件并使其可用(名称为a和a.b)。
相关文章