2012-08-08 64 views
2

可能重複:
'import module' or 'from module import'
from … import vs import .我沒有在Python的 '從' 理解

from glob import glob 
from os.path import isfile 
def countwords(fp): 
    with open(fp) as fh: 
     return len(fh.read().split()) 

print "There are" ,sum(map(countwords, filter(isfile, glob("*.txt")))), "words in the files." 
在第一線

,爲什麼不這樣只是簡單導入glob庫?

是否有任何理由在「導入glob」前使用「from glob」?

+0

也許更好:http://stackoverflow.com/questions/710551/import-module-or-from-module-import – 2012-08-08 13:44:22

回答

5

如果你寫import glob,您需要使用glob.glob

from glob import glob需要glob.glob並使其僅作爲glob

+2

同意。我主要是爲了方便而使用「from」關鍵字,但有時爲了避免名稱衝突是必要的。 – djf 2012-08-08 13:48:38

4
>>> import glob 
>>> dir(glob) 
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 
'fnmatch', 'glob', 'glob0', 'glob1', 'has_magic', 'iglob', 'magic_check', 
'os', 're', 'sys'] 

你可以看到所有的這裏的水珠模塊中的功能,你可以例如想要水珠的迭代器版本,並在這種情況下,你可以使用:

from glob import iglob 
3

如果您使用import glob,對於功能glob("*.txt"),您必須編寫glob.glob("*.txt")

基本上,from glob import glob中的第一個glob是模塊的名稱,而第二個是函數的名稱。

1

當您有import glob時,您將從該模塊導入所有功能。當您有from xyz import abc時,您只需從xyz模塊導入abc功能。在這種情況下,您要從glob模塊導入glob函數。

這樣,在Python代碼中,如果要使用glob函數,而不是編寫glob.glob,則只需編寫glob

2

from glob import glob將導入glob屬性glob模塊的時候import glob將導入整個模塊