我不理解Python中的'from'

时间:2012-08-08 13:42:14

标签: python glob

  

可能重复:
  'import module' or 'from module import'
  from … import vs import .

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库?

有没有理由在“import glob”前面使用“from glob”?

6 个答案:

答案 0 :(得分:5)

如果您撰写import glob,则需要使用glob.glob

from glob import glob获取glob.glob并将其设为glob

答案 1 :(得分:4)

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

你可以在这里看到glob模块中的所有函数,你可能想要一个glob的迭代器版本,在这种情况下你可以使用:

from glob import iglob

答案 2 :(得分:3)

如果你使用import glob,对于函数glob("*.txt"),你必须写glob.glob("*.txt")

基本上,glob中的第一个from glob import glob是模块的名称,而第二个是函数的名称。

答案 3 :(得分:2)

from glob import glob导入整个模块时,

glob将导出glob模块的import glob属性

答案 4 :(得分:2)

这个链接似乎很好地解释了所有不同的变化:

http://effbot.org/zone/import-confusion.htm

最重要的是,从模块导入特定的东西只能直接引用那个东西,而不是整个模块。

答案 5 :(得分:1)

如果有import glob,则从该模块导入所有函数。如果您有from xyz import abc,那么您只需从abc模块导入xyz功能。在这种情况下,您要从glob模块导入glob函数。

这样,在Python代码中,如果您想使用glob函数,而不是编写glob.glob,则只需编写glob