0

这是一个语言设计问题。为什么设计师不使用

import A.B

代替

from A import B

假设 A 是一个包含函数 B 的模块。导入语法使用单一样式不是更好吗?这背后的设计原则是什么?我认为 Java 风格的导入语法感觉更自然。

4

3 回答 3

5

Python 导入语句主要用于加载模块和包。您必须先导入模块,然后才能使用它。第二种形式的导入只是一个附加功能,加载模块,然后将它的某些部分复制到本地命名空间中。

存在 Java 导入语句以创建其他模块中加载的名称的快捷方式。Java import 语句不加载任何内容,而只是将内容移动到本地名称空间中。在 Java 中,您无需导入模块即可使用它们。import 语句与是否加载模块无关。

所以这两种语言采用完全不同的方法来导入。导入语句基本上只是不做同样的事情。Python 的导入用于加载,Java 导入用于快捷方式。

Java 的方法在 python 中会有些问题。在 Java 中,很容易从语法中区分什么是类/模块/包。Python 没有这个优势。结果,编译器和读者将难以确定什么是和不应该是对外部包的引用。出于这个原因,Python 的设计者选择使其明确并强制您指定要加载的外部模块。

于 2013-07-06T05:50:49.807 回答
4

一致性。import A.B 从不添加B到本地命名空间,即使在它有效的情况下;它只是B通过 提供A,这些功能已经很自然了。

于 2013-07-06T05:33:03.607 回答
1

您可以使用模块执行此操作,但不能使用函数,例如。

os.path通常是这样进口的

于 2013-07-06T05:30:33.837 回答