Python:通用导入
有没有人能解释一下,哪个'import'是通用的,这样我就不需要写比如说:
from numpy import *
import numpy
import numpy as np
from numpy.linalg import *
那为什么不直接用 import numpy
或者 from numpy import *
来引入“numpy”里的所有内容呢?
1 个回答
9
我不太明白你说的“全部来自numpy”是什么意思,但你一次只需要用一种方式来import
。它们的作用是不一样的:
选项一:import
import numpy
会把整个numpy模块引入到当前的命名空间中。这样你就可以用numpy.dot
或者numpy.linalg.eig
来引用这个模块里的任何东西。
选项二:from ... import *
from numpy import *
会把numpy中的所有公共对象引入到当前的命名空间,变成本地引用。如果这个包里有一个叫__all__
的列表,那么这个命令也会import
列表中定义的每个子模块。
根据我最后检查的情况,numpy的这个列表包括'linalg'、'fft'、'random'、'ctypeslib'、'ma'和'doc'。所以,一旦你运行了这个命令,你就可以直接调用dot
或linalg.eig
,而不需要加上numpy前缀。
如果你想要一种方式,把包中每个子模块的所有符号都引入到你的命名空间,那我觉得是没有的。你需要这样做:
from numpy.linalg import *
from numpy.fft import *
from numpy.random import *
from numpy.ctypeslib import *
from numpy.ma import *
from numpy import *
我想这就是你想要避免的情况。