Python 导入语句
我开始学习Python大约一个月了,遇到了一些想更好理解的事情。这和导入模块有关。我有一个模块:
root.core.connectivity
在这个模块里,我定义了一个叫做Connectivity的类。这个模块还有一个__main__
部分,主要是为了测试(不太确定这是否有影响)。
现在如果我这样做:
from root.core.connectivity import Connectivity as class_name
这样是没问题的,但如果我尝试:
import root.core.connectivity.Connectivity as class_name
这就会失败,错误信息是:
ImportError: No module named Connectivity
所以我想问的是,为什么会失败,这两种写法有什么不同。
祝好,
Bogdan
3 个回答
0
root.core.connectivity 是一个模块,而 root.core.connectivity.Connectivity 是一个类。
要理解 import 和 from ... import 之间的区别,你可以查看这个链接,里面有详细的说明:
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
3
Connectivity是一个在模块中定义的类。我们可以通过导入模块来使用它,而使用from-import的方式可以直接导入模块中的某个类。
5
import
是用来引入一个模块的。from X import Y
是从模块 X 中引入 Y 这个元素。Connectivity
不是一个模块。