`from x import y` 与 `from x.y import *` 的区别

6 投票
2 回答
2405 浏览
提问于 2025-04-16 09:37

这两行代码有什么区别呢?

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)

撰写回答