`from x import y` 与 `from x.y import *` 的区别
这两行代码有什么区别呢?
from PyQt4 import QtGui
from PyQt4.QtGui import *
第一行的意思是“从PyQt4模块中导入QtGui这个类”。
那么第二行是什么意思呢?“从PyQt4模块的QtGui中导入所有内容”。
这两者不是一样的吗?
2 个回答
0
一个包可以导出多个东西。第一行是从这个包里导入一个特定的对象,而第二行则是导入包里的所有东西。如果你导入的包只导出一个东西,这两种写法其实是一样的。
11
第一句话是把指定的模块导入到当前的命名空间中。
第二句话是把指定模块里的所有内容都导入到当前的命名空间中。
所以1)的意思是你仍然需要通过模块的名字来明确引用里面的类、函数等内容。
2)的意思是你不需要这样做。
下面是一个对比,展示了它们之间的区别:
1)
import math
d = math.sqrt(10)
2)
from math import *
d = sqrt(10)
注意,如果你想的话,可以选择从模块中导入特定的内容,比如:
from math import sqrt
d = sqrt(10)