【问题标题】:I don't understand the 'from' in Python [duplicate]我不明白 Python 中的“来自”[重复]
【发布时间】:2012-08-05 15:22:46
【问题描述】:
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”有什么理由吗?

【问题讨论】:

    标签: python glob


    【解决方案1】:

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

    from glob import glob 采用 glob.glob 并使其仅作为 glob 可用。

    【讨论】:

    • 同意。我使用“from”关键字主要是为了方便,但有时为了避免名称冲突是必要的。
    【解决方案2】:
    >>> 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
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        from glob import glob 将导入 glob 模块的 glob 属性,而 import glob 将导入整个模块

        【讨论】:

          【解决方案5】:

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

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

          最重要的是,从模块中导入特定事物只会让您直接引用该事物而不是整个模块。

          【讨论】:

            【解决方案6】:

            当您拥有import glob 时,您可以从该模块导入所有函数。当您拥有from xyz import abc 时,您只需从xyz 模块导入abc 函数。在本例中,您从 glob 模块导入 glob 函数。

            这样,在Python代码中,如果要使用glob函数,不用写glob.glob,只需要写glob即可。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-02-29
              • 2015-05-19
              • 1970-01-01
              • 2021-09-21
              • 1970-01-01
              • 2018-12-28
              • 2015-08-30
              • 1970-01-01
              相关资源
              最近更新 更多