Python:import foo.bar as bar 与 from foo import bar 的区别

5

假设 foo.bar 是一个模块,那么以下两种方式有什么区别:

import foo.bar as bar

并且

from foo import bar

我对模块的惰性导入特别感兴趣。
注意:这不是这个问题的重复。

对于找到这个问题的任何人,请查看此答案 - EhsanK
1个回答

0

在第一行代码中:

 import foo.bar as bar

在这里,你正在从foo包导入bar,但为什么要添加"as bar"呢?这意味着当你需要访问bar中的任何函数func时,你必须像这样访问:foo.bar.func。但是当你添加了"as bar"后,你只需使用 bar.func。
 bar.func

与行from foo import bar相同,只是导入bar

我不认为那是真的。经过尝试并使用 dir()dir(bar) 进行检查,命名空间看起来完全一致。bar 内的函数在两种情况下都可用。 - Simon Fraser
@SimonFraser:我的解释是指模块中函数的可访问性。 - user5777975
在这两个例子中,可以通过 bar.func1() 访问 bar 中的函数 func1 - Simon Fraser
正如@SimonFraser所说,当您使用它们时,它们是完全等效的。我想知道Python在加载导入时是否有任何差异。 - John Oxley

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