使用import *将模块和关联的定义/函数/对象导入python命名空间

时间:2015-02-23 10:24:01

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

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

例如,我需要从ndimage导入scipy个包。但 from scipy import *不会导入与scipy相关联的所有内容。 只有这样才能使用:from scipy import ndimageimport scipy.ndimage

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

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

2 个答案:

答案 0 :(得分:1)

您必须阅读文档。如果scipy this intro page on importing很重要。

使用包时,__all__文件中的__init__变量可确定import *加载的内容。

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

答案 1 :(得分:0)

ndimagescipy下的子模块。此子模块不会被scipy的__init__.py导入,因此不会导入import scipy

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

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

Scipy进口相当少的自己的名字,但很多来自numpy。我在那里看到了from numpy import *,因此您可以访问许多名称,例如scipy.arrayscipy.mean