导入A.B也导入A?

2022-03-31 00:00:00 python python-import

问题描述

当我导入包中的子包时,是否可以依赖父包也被导入这一事实?

例如,此方法有效

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加载这两个文件并使其可用(名称为aa.b)。

相关文章