Python:通用导入

Python:通用导入,python,numpy,python-import,Python,Numpy,Python Import,谁能解释一下哪个“导入”是通用的,所以我不需要写以下例子: from numpy import * import numpy import numpy as np from numpy.linalg import * 为什么不import numpy或from numpy import*来包含“numpy”中的所有内容呢?我不知道“all from numpy”是什么意思,但您不应该一次使用多个形式的import。他们做不同的事情: 选项一:导入 import numpy将把整个numpy模块

谁能解释一下哪个“导入”是通用的,所以我不需要写以下例子:

from numpy import *
import numpy
import numpy as np
from numpy.linalg import *

为什么不
import numpy
from numpy import*
来包含“numpy”中的所有内容呢?

我不知道“all from numpy”是什么意思,但您不应该一次使用多个形式的
import
。他们做不同的事情:

选项一:
导入
import numpy
将把整个numpy模块带到当前名称空间中。然后,您可以将该模块中的任何内容引用为
numpy.dot
numpy.linalg.eig

选项二:
来自。。。导入*
from numpy import*
将把所有来自numpy的公共对象作为本地引用带入当前名称空间。如果包中包含一个名为
\uuuu all\uuu
的列表,则此命令还将
导入该列表中定义的每个子模块

对于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 *

我想,这就是你想要避免的。

你所说的“通用”是什么意思?我不明白为什么我需要写>from numpy.linalg import*“如果我已经声明了‘from numpy import*”便利。这只是意味着你可以直接引用这些变量,而不是将它们称为
linalg.whatever
。也,
从pkg导入*
不一定会引入包中的所有内容-包作者可以指定一个
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>变量来指示要加载哪些对象。我回滚了上一次编辑,以便问题仍然可见。尽管没有这样的问题,但原因很好:如果在您的从不同的模块中读取名称空间,当您阅读代码时,很难确定每个模块来自何处<代码>从x导入*
最好适度使用。对于未明确设计为以这种方式使用的第三方模块,最好避免从x导入*
在除交互式提示之外的任何地方使用。