如何省略模块前缀?

时间:2017-07-05 09:48:25

标签: python

我是python的新手,我有一个简单的问题。

例如

如果我这样做

import A

然后我可以使用A.b()。 我想知道,如何在A中省略A.b()

3 个答案:

答案 0 :(得分:19)

如果您想使用模块b中的A

from A import b

如果要重命名:

from A import b as my_b

如果您需要多个物品:

from A import b, c, d

如果你需要一切:

from A import *

关于import *选项,请阅读this post。 它相当短,但是tl; dr:不要通过from A import *从模块导入所有内容。 如果您确实需要模块中的所有内容或其内容的很大一部分,请选择正常导入,可能需要重命名:

import numpy as np
import tkinter as tk

答案 1 :(得分:7)

由于A是一个模块,您可以这样做:

from A import b 

b()

答案 2 :(得分:2)

此问题已经得到解答,但使用导入时需要注意的一点是

from module import foo

import module

就内存和性能而言,绝对是一样的。在任何一种情况下,module都会被编译并加载到sys.modules中。唯一的区别是你的命名空间带来了什么。在第一种情况下,它是foo。在第二种情况下,它是module

由于其他答案没有解释为什么使用from module import *不好,这就是原因:*会将所有内容导入您的命名空间以供直接使用。除非你知道自己在做什么,否则这不是一个好主意。名称冲突绝对是可能的,尤其是在导入多个大型模块时。

这可能是一个意见问题,但我相信import module后跟module.foo()更安全,让读者更好地了解该方法/属性,它来自何处,以及它是什么这样做。可读性很重要!