use*_*287 7 python import numpy scipy
我通过Anaconda 2.1.0发行版使用scipy和numpy.我使用Spyder作为我的Python IDE.
当我运行时 import scipy as sp,我无法访问子包,例如optimize,linalg,cluster等sp.
但是,当我运行时import numpy as np,我能够访问其所有子包,例如linalg,random,matrixlib,polynomial,testing等np.
这两种进口是否有不同的原因?为什么不import scipy as sp抓住所有scipy子包进入sp命名空间?
通过设计python语言,可能会出现这种不同导入行为的可能性.
默认情况下,模块(*)的import语句只导入主模块,而不导入子模块.主模块可以(例如在)的情况下numpy,或者可以不(例如scipy)导入一些或所有子模块.
这背后的原因如下scipy:在大多数情况下,您只需要一个scipy包的子模块.此默认行为不会挂起解释器加载代码不必要的子模块.
编辑:请注意,numpy默认情况下不会导入所有子模块,例如它不加载numpy.f2py,请参阅此问题/答案以获取更多详细信息.
(*)这里我的意思是一个像import scipy或的导入语句import scipy as sp,其中加载了一个模块.当然如果你写,import scipy.optimize那么python将首先加载主模块,然后加载子模块.