如果您有module
之类的模块,是否可以绕过它并使用内部可用的功能而不使用模块?
我导入了模块,但编译器仍然抱怨不必找到function
。我仍然需要使用module.function()
。
它还有更多功能,所以我不想逐一重新定义它们,但如果可能的话,请避免输入module
。
答案 0 :(得分:6)
在Python中导入只会在命名空间中添加内容。如何限定导入的名称是import foo
和from foo import bar
之间的差异。
在第一种情况下,您只会导入模块名称foo
,这就是您将如何访问其中的任何内容,这就是您需要执行foo.bar()
的原因。第二种情况,您明确导入仅 bar
,现在您可以这样调用它:bar()
。
from foo import *
会将所有可导入的名称(在特殊变量__all__
中定义的名称)导入当前名称空间。这虽然有效但不推荐,因为您最终可能会意外覆盖现有名称。
foo = 42
from bar import * # bar contains a `foo`
print foo # whatever is from `bar`
最佳做法是导入您需要的任何内容:
from foo import a,b,c,d,e,f,g
或者您可以使用别名
import foo as imported_foo
底线 - 尽量避免使用from foo import *
。