1

如果你有一个类似的模块module,你可以绕过它并在不使用模块的情况下使用内部可用的功能吗?

我导入了模块,但编译器仍然抱怨不必查找function. 我还是得用module.function()

它有更多的功能,所以我不想一一重新定义它们,而是module尽可能避免打字。

4

1 回答 1

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 *

于 2013-03-17T14:19:00.017 回答