我想导入模块foo
以及它的子模块foo.bar
。我可以按照以下方式实现:
import foo.bar
现在,我可以使用
foo
和foo.bar
,这正是我想要的。根据文档,这是因为首先导入了foo
模块:
我不清楚导入工作原理,现在我知道了,以下代码看起来相当愚蠢:在这种情况下,Python 首先尝试导入
foo
,然后foo.bar
,最后是foo.bar.baz
。
import foo
import foo.bar
单一的引入是否足够清晰地表达给其他程序员?
import foo
声明你将使用foo
中的函数/类型/常量,而不仅仅是foo.bar
。当子包密切相关时,这并没有添加太多信息——如果你导入了importlib.util
,那么你调用importlib
函数也不会让人惊讶。但是当它们更加独立时,就不同了——使用os.path
并不意味着你要使用os
。 - abarnertfoo
可用,那么foo.bar
怎么可能可用呢? - Davis Herring