导入模块隐式与显式的区别

5

我想导入模块foo以及它的子模块foo.bar。我可以按照以下方式实现:

import foo.bar

现在,我可以使用foofoo.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 - abarnert
1
如果没有 foo 可用,那么 foo.bar 怎么可能可用呢? - Davis Herring
1个回答

0

单一的导入并不足以清晰地运行程序。我们需要明确指定从导入的包中我们想要使用哪些项目。

您也可以这样写:

import  foo
from foo import foo.bar
from foo import foo.bar.baz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接