`from x import y` vs.`from x.y import *`

时间:2011-01-08 17:04:44

标签: python

这两行之间有什么区别?

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)

答案 1 :(得分:0)

包可以导出多个东西。不同之处在于第一行从包中导入单个对象,第二行导入所有内容。如果您导入的包只导出一件事,那么这两个是同义词。