2011-01-08 68 views
5

這兩行之間有什麼區別?`from x import y` vs.`from x.y import *`

from PyQt4 import QtGui 
from PyQt4.QtGui import * 

第一行是「從模塊PyQt4導入QtGui類」。
但第二行意味着什麼? 「從PyQt4模塊的QtGui導入所有東西」。
是不是一樣?

+2

一是進口模塊插入到當前的命名空間,第二進口一切事情,從模塊自己的命名空間到當前的命名空間,你可以選擇從一個模塊中導入特定的符號。 –

+0

請注意,第二種形式非常令人沮喪 - 請參閱http://docs.python.org/howto/doanddont.html#from-module-import瞭解原因。 – delnan

回答

10

第一條語句將指定模塊導入當前名稱空間。
第二條語句將指定模塊中的所有內容導入當前命名空間。

所以1)意味着你仍然需要通過模塊的名稱空間
2,明確引用任何類/功能等),意味着你沒有

這裏有一個比較和對比,顯示差異

1 )

import math 

d = math.sqrt(10) 

2)

from math import * 

d = sqrt(10) 

注意,如果你想即

from math import sqrt 
d = sqrt(10) 
0

軟件包可能導出多個事物。區別在於第一行從包中導入單個對象,第二行導入所有內容。如果您要導入的軟件包只導出一件東西,則兩者是同義詞。

相關問題