关于在python中导入模块,我有些不明白的地方。我的理解是,如果我们使用ipython命令提示符,例如In [1]: from module import *
然后它将导入与特定<module>
相关联的所有子模块和函数定义。
例如,我需要从ndimage
导入scipy
个包。但
from scipy import *
不会导入与scipy
相关联的所有内容。
只有这样才能使用:from scipy import ndimage
或import scipy.ndimage
。
一般来说,有没有办法知道使用import *
命令导入(或不导入)的默认函数/模块/定义列表?
PS:我在Windows 7操作系统上使用Anaconda分发的python(2.7)。
答案 0 :(得分:1)
您必须阅读文档。如果scipy
this intro page on importing很重要。
使用包时,__all__
文件中的__init__
变量可确定import *
加载的内容。
不鼓励*
导入;方便的别名更好,例如import numpy as np
。这样,当您使用模块中的代码时就很清楚了。
答案 1 :(得分:0)
ndimage
是scipy
下的子模块。此子模块不会被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.array
和scipy.mean
。