【问题标题】:importing module and associated definitions/functions/objects into python namespace using import *使用 import * 将模块和相关的定义/函数/对象导入 python 命名空间
【发布时间】:2015-04-24 15:26:56
【问题描述】:

关于在 python 中导入模块,我有一些不明白的地方。我的理解是,如果我们使用 ipython 命令提示符,例如In [1]: from module import * 然后它将导入与特定 <module> 关联的所有子模块和函数定义。

例如,我需要从scipy 导入ndimage 包。但 from scipy import * 不会导入与 scipy 关联的所有内容。 似乎唯一可行的方法是使用:from scipy import ndimageimport scipy.ndimage

一般来说,有没有办法知道使用import * 命令导入(或未导入)的默认函数/模块/定义列表?

PS:我在 Windows 7 操作系统上使用 Python (2.7) 的 Anaconda 发行版。

【问题讨论】:

标签: python python-2.7 numpy import python-import


【解决方案1】:

您必须阅读文档。在scipy的情况下this intro page on importing很重要。

对于包,__init__ 文件中的__all__ 变量决定了使用import * 加载的内容。

不鼓励使用 * 导入;方便的别名更好,例如import numpy as np。这样一来,您在使用模块中的代码时就很清楚了。

【讨论】:

    【解决方案2】:

    ndimagescipy 下的子模块。这个子模块不是由 scipy 的__init__.py 导入的,所以它不会被import scipy 导入。

    您可以通过阅读 scipy 的 __init__.py 来查看使用 import scipy 实际导入的内容。在我的系统中,它位于:

    >>> scipy.__file__ '/usr/local/lib/python2.7/dist-packages/scipy/__init__.pyc'

    Scipy 很少导入自己的名称,但很多来自 numpy。我在那里看到from numpy import *,所以你可以访问许多numpy名称,例如scipy.arrayscipy.mean

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      相关资源
      最近更新 更多