我是python的新手,我有一个简单的问题。
例如
如果我这样做
import A
然后我可以使用A.b()
。
我想知道,如何在A
中省略A.b()
?
答案 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()
更安全,让读者更好地了解该方法/属性,它来自何处,以及它是什么这样做。可读性很重要!