有没有办法绕过Python中的命名空间/模块名?



如果您有一个像module这样的模块,您可以绕过它并使用内部可用的功能而不使用模块吗?

我导入了模块,但是编译器仍然抱怨没有找到function。我还是要用module.function()

它有更多的函数,所以我不想一个一个地重新定义它们,只是避免键入module如果可能的话。

在Python中导入只是将内容添加到您的命名空间中。如何限定导入的名称是import foofrom 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 * .

最新更新