谁能解释一下哪个'import'是通用的,所以我不需要写例如:
from numpy import *
import numpy
import numpy as np
from numpy.linalg import *
为什么不 import numpy
或 from numpy import *
来包含所有来自“numpy”的内容?
最佳答案
我不确定您所说的“全部来自 numpy”是什么意思,但是您永远不需要一次使用多种形式的 import
。他们做不同的事情:
选项一:导入
import numpy
会将整个 numpy 模块引入当前命名空间。然后,您可以将该模块中的任何内容引用为 numpy.dot
或 numpy.linalg.eig
。
选项二:from ... import *
from numpy import *
会将 numpy 中的所有公共(public)对象作为本地引用引入当前命名空间。如果包包含一个名为 __all__
的列表,那么此命令还将导入
该列表中定义的每个子模块。
对于 numpy,此列表包括“linalg”、“fft”、“random”、“ctypeslib”、“ma”和我上次检查的“doc”。因此,运行此命令后,您可以调用不带 numpy 前缀的 dot
或 linalg.eig
。
如果您正在寻找一种将包中每个子模块的每个符号都拉入您的命名空间的导入,那么我认为没有这样的导入。你必须做这样的事情:
from numpy.linalg import *
from numpy.fft import *
from numpy.random import *
from numpy.ctypeslib import *
from numpy.ma import *
from numpy import *
我认为这是您要避免的。
关于Python:通用导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956627/