python导入语句

python导入语句,python,Python,我已经开始研究Python大约一个月了,我遇到了一些我想更好理解的东西。这与进口有关。所以我有一个模块: root.core.connectivity 现在在这个模块中,我定义了一个类连接性。此模块还有一个仅用于测试目的的\uuuuuu main\uuuuuu(不确定这是否会产生任何差异) 现在如果我这样做: from root.core.connectivity import Connectivity as class_name 这很好,但是如果我尝试: import root.core.c

我已经开始研究Python大约一个月了,我遇到了一些我想更好理解的东西。这与进口有关。所以我有一个模块: root.core.connectivity

现在在这个模块中,我定义了一个类连接性。此模块还有一个仅用于测试目的的
\uuuuuu main\uuuuuu
(不确定这是否会产生任何差异)

现在如果我这样做:

from root.core.connectivity import Connectivity as class_name
这很好,但是如果我尝试:

import root.core.connectivity.Connectivity as class_name
这将在以下情况下失败:

ImportError: No module named Connectivity
所以我的问题是,为什么它失败了,这两种说法之间有什么区别

问候,,
Bogdan

导入需要一个模块<代码>从X导入Y在X中获取一个模块,Y中该模块的任何元素。
连通性
不是一个模块。

root.core.Connectivity是一个模块,而root.core.Connectivity.Connectivity是一个类。 了解进口与进口之间的差异。。可以在您可以找到的位置导入:

import_stmt ::= "import" module ["as" name] ( "," module ["as" name] )*
| "from" relative_module "import" identifier ["as" name]
  ( "," identifier ["as" name] )*
| "from" relative_module "import" "(" identifier ["as" name]
  ( "," identifier ["as" name] )* [","] ")"
| "from" module "import" "*"
例如,您对模块使用“导入”和“来自…”。。。带有标识符的“导入”-例如类、变量和其他模块

因此,在第二种情况下,您可以执行以下操作:

import root.core.connectivity as conn
class_name = conn.Connectivity

连接性是在模块中定义的一个类,导入采用模块,当使用“从导入”时,我们可以导入模块的类

这个链接解释得很好

注意:由于模块是一级值,您可以(有时会)通过
从X导入Y
从包(甚至子包)
X
导入模块
Y
。如果包内容本身不是完整的模块,那么在
\uuuu init\uuuu.py
中显式导入包内容是一个很好的理由。