导入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
)。
相关文章