python导入语句

时间:2011-08-04 08:24:28

标签: python

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

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

现在,如果我这样做:

from root.core.connectivity import Connectivity as class_name

这很好,但是如果我尝试:

import root.core.connectivity.Connectivity as class_name

这将失败:

ImportError: No module named Connectivity

所以我的问题是,为什么它会失败,两个陈述之间有什么不同。

此致 波格丹

3 个答案:

答案 0 :(得分:5)

import需要一个模块。 from X import Y在X中使用一个模块,而Y. Connectivity中该模块的任何元素都不是模块。

答案 1 :(得分:3)

连接是模块中定义的类,导入模块,使用from-import时我们可以导入模块的类。

此链接解释得很好 http://effbot.org/zone/import-confusion.htm

答案 2 :(得分:0)

root.core.connectivity是一个模块,而root.core.connectivity.Connectivity是一个类。 要在导入和导入之间进行差异,您可以在use the following link找到:

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'和带有标识符的'from ... import' - 例如类,变量和其他模块。

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

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